我有一个带有静态函数getSharedInstance的类,因此应该给我一个指向已经实例化的类的指针。
部首:
class foo {
public:
static foo *getSharedInstance();
private:
static foo *sharedInstance;
}
实现:
foo *foo::getSharedInstance() {
if(sharedInstance == NULL)
sharedInstance = new foo();
return sharedInstance;
}
我不明白的一点是,为什么我会对变量sharedInstance进行未定义的引用?
答案 0 :(得分:6)
你必须在某处(通常在你的班级'cpp文件中)实例化它:
foo *foo::sharedInstance;
编译器假定它会在某处找到符号(即代表您实例的指针)。但是,如果你没有定义它,它就不会找到它,因此会引发undefined reference