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

C++ accessing private static variable within a static function

本文关键字:静态 变量 访问 静态函数      更新时间:2023-10-16

我有一个静态函数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;

编译器假定它会在某处找到符号(即代表你的实例的指针)。然而,如果你不定义它,它不会找到它,因此会引发undefined reference