我知道那里有一百万个关于单身人士的问题和答案,但我似乎无法找到解决方案。所以冒着投反对票的风险,这是我的问题:
我想使用 Andrei Alexandrescu 的 Modern C++ Design 这个单例实现:
标题:
class Singleton
{
static Singleton& Instance();
private:
Singleton(){};
Singleton(const Singleton&){};
Singleton& operator=(const Singleton&){};
~Singleton(){};
};
执行:
#include "s.hh"
Singleton& Singleton::Instance()
{
static Singleton instance;
return instance;
}
测试:
#include "s.hh"
int main(void)
{
Singleton& single = Singleton::Instance();
return 0;
}
现在,
$g++ A.cc s.cc && ./a.out
In file included from A.cc:1:0:
s.hh: In function ‘int main()’:
s.hh:3:19: error: ‘static Singleton& Singleton::Instance()’ is private
static Singleton& Instance();
^
A.cc:6:42: error: within this context
Singleton& single = Singleton::Instance();
^
那有什么问题?我被困住了...