3

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

标题:

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

private:
  static foo *sharedInstance;
}

执行:

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

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

4

1 回答 1

6

你必须在某个地方实例化它(通常在你的类的 cpp 文件中):

foo *foo::sharedInstance;

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

于 2013-06-03T08:14:38.083 回答