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

Chr*_*ter 3 c++ qt class

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

标题:

class foo {
public:
  static foo *getSharedInstance();

private:
  static foo *sharedInstance;
}
Run Code Online (Sandbox Code Playgroud)

执行:

foo *foo::getSharedInstance() {
    if(sharedInstance == NULL)
        sharedInstance = new foo();
    return sharedInstance;
}
Run Code Online (Sandbox Code Playgroud)

我不明白的一点是,为什么我得到对变量sharedInstance的未定义引用?

Xaq*_*aqq 6

你必须在某处实例化(通常在你的类'cpp文件中):

foo *foo::sharedInstance;
Run Code Online (Sandbox Code Playgroud)

编译器假定它将在某处找到符号(即表示您的实例的指针).但是,如果你没有定义它,它就不会找到它并因此提高undefined reference