gpt4 book ai didi

c++ - 有没有办法在本地范围内为单例分配名称?

转载 作者:太空宇宙 更新时间:2023-11-04 16:12:47 25 4
gpt4 key购买 nike

我有一个返回单例的方法。

// Window.h    
static Window &getSingleton();

// Window.cpp
Window &Window::getSingleton()
{
static Window singleton;
return singleton;
}

例如,来自 Objective-C 我习惯于将单例分配给局部范围变量名称。

UIApplication *application = [UIApplication sharedApplication];

但是在 C++ 中做类似的事情会导致创建一个新对象。

Window window = Window::getSingleton();

发生这种情况是因为调用了复制构造函数,在本例中为 Window(Window const &windowCopy)

有没有办法解决这个问题,还是我必须在需要与之交互时始终调用我的单例方法?

最佳答案

在 C++ 中,

Window window = <some expression>

的意思是“从Window的值构造一个类型为<some expression>的对象。Window::getSingleton()计算为对Window的左值引用,并且可用于初始化新的Window ”对象(除了Window不是可复制构造的事实。)

您需要做的是引用Window::getSingleton()函数中创建的静态对象。函数本身返回一个引用。您需要做的就是在 LHS 上使用对Window的引用:

Window& window = Window::getSingleton();
^

关于c++ - 有没有办法在本地范围内为单例分配名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26448999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com