有没有一种方法可以为本地作用域中的单例分配名称
Is there a way to assign a name to a singleton in the local scope?
我有一个返回单例的方法。
// Window.h
static Window &getSingleton();
// Window.cpp
Window &Window::getSingleton()
{
static Window singleton;
return singleton;
}
例如,来自Objective-C
的我习惯于将singleton分配给局部作用域变量名。
UIApplication *application = [UIApplication sharedApplication];
但是在C++
中执行类似的操作会导致创建一个新对象。
Window window = Window::getSingleton();
发生这种情况是因为调用了复制构造函数,在本例中为Window(Window const &windowCopy)
。
有没有办法解决这个问题,或者当我需要与singleton方法交互时,我必须总是调用它?
在C++中,
Window window = <some expression>
意思是类似于"从<some expression>
的值构造Window
类型的对象。Window::getSingleton()
计算为对Window
的左值引用,可用于初始化新的Window
对象(Window
不可复制构造的事实除外)。"
您需要做的是参考在Window::getSingleton()
函数中创建的静态对象。函数本身返回一个引用。你所需要做的就是在LHS:上使用Window
的参考
Window& window = Window::getSingleton();
^
相关文章:
- 未在作用域中声明unordered_map
- 有没有一种方法可以在编译时获得作用域类名
- C++quit()函数中可能存在作用域问题
- 未在此作用域OpenCV3.4中声明cvSaveImage
- 全局作用域中函数指针的赋值
- 为什么在单例中,检查类==空?
- 在类函数中初始化外部作用域变量
- 不同作用域中的静态变量和全局变量
- C++ 实现模板单例类时出现链接错误
- 在类中存储单例的指针
- 是同一作用域的函数部分中的函数调用
- C++中的单例实现在调用 getInstance 函数时不会产生相同的类实例
- 未在此作用域中声明的函数和变量 (C++)
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 将作用域枚举转换为基础类型
- 表达式必须具有完整或无作用域的枚举图
- 在构造函数中输入对象时C++类成员作用域
- 为什么这种单例模式不起作用?
- 单例中的构造函数重载不起作用
- 有没有一种方法可以为本地作用域中的单例分配名称