C++ C++;在静态函数中访问私有静态变量
我有一个带有静态函数getSharedInstance的类,因此应该给我一个指向该类已实例化版本的指针 标题:C++ C++;在静态函数中访问私有静态变量,c++,qt,class,C++,Qt,Class,我有一个带有静态函数getSharedInstance的类,因此应该给我一个指向该类已实例化版本的指针 标题: class foo { public: static foo *getSharedInstance(); private: static foo *sharedInstance; } 实施: foo *foo::getSharedInstance() { if(sharedInstance == NULL) sharedInstance = new
class foo {
public:
static foo *getSharedInstance();
private:
static foo *sharedInstance;
}
实施:
foo *foo::getSharedInstance() {
if(sharedInstance == NULL)
sharedInstance = new foo();
return sharedInstance;
}
我不明白的一点是,为什么我会得到对变量sharedInstance的未定义引用?您必须将它实例化到某个地方(通常在类的cpp文件中):
编译器假定它将在某处找到符号(即表示实例的指针)。但是,如果您不定义它,它将找不到它,因此将引发
未定义的引用
您需要定义静态数据成员。您只声明了一个。这意味着您必须执行如下操作:foo*foo::sharedInstance=0代码>在您的cpp文件中。谢谢,我想我已经做了很多php:)
foo *foo::sharedInstance;