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

时间:2013-06-03 08:13:01

标签: c++ qt class

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

部首:

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

private:
  static foo *sharedInstance;
}

实现:

foo *foo::getSharedInstance() {
    if(sharedInstance == NULL)
        sharedInstance = new foo();
    return sharedInstance;
}

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

1 个答案:

答案 0 :(得分:6)

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

foo *foo::sharedInstance;

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