Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在静态函数中访问私有静态变量_C++_Qt_Class - Fatal编程技术网

C++ C++;在静态函数中访问私有静态变量

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

我有一个带有静态函数getSharedInstance的类,因此应该给我一个指向该类已实例化版本的指针

标题:

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;