ste*_*fen 4 c++ singleton design-patterns
我知道有一百万个关于单身人士的问题和答案,但我似乎找不到解决方案。因此,冒着投反对票的风险,这就是我的问题:
\n\n我想使用 Andrei Alexandrescu 现代 C++ 设计中的单例实现:
\n\n标头:
\n\nclass Singleton\n{\n static Singleton& Instance();\n private:\n Singleton(){};\n Singleton(const Singleton&){};\n Singleton& operator=(const Singleton&){};\n ~Singleton(){};\n};\nRun Code Online (Sandbox Code Playgroud)\n\n执行:
\n\n#include "s.hh"\n\nSingleton& Singleton::Instance()\n{\n static Singleton instance;\n return instance;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n测试:
\n\n#include "s.hh"\n\nint main(void)\n{\n Singleton& single = Singleton::Instance();\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n现在,
\n\n$g++ A.cc s.cc && ./a.out \nIn file included from A.cc:1:0:\ns.hh: In function \xe2\x80\x98int main()\xe2\x80\x99:\ns.hh:3:19: error: \xe2\x80\x98static Singleton& Singleton::Instance()\xe2\x80\x99 is private\n static Singleton& Instance();\n ^\nA.cc:6:42: error: within this context\n Singleton& single = Singleton::Instance();\n ^\nRun Code Online (Sandbox Code Playgroud)\n\n这有什么问题吗?我被困住了...
\n默认情况下,类的成员是私有的。要访问您的单例,您需要公开Singleton::Instance:
class Singleton
{
// here!
public:
static Singleton& Instance();
private:
Singleton(){};
Singleton(const Singleton&){};
Singleton& operator=(const Singleton&){};
~Singleton(){};
};
Run Code Online (Sandbox Code Playgroud)
请注意,这不是构造函数(正如您在标题中所说),它是应该返回对单例的引用的静态成员函数。
| 归档时间: |
|
| 查看次数: |
5398 次 |
| 最近记录: |