c++链接器错误在单例类中未定义引用

C++ Linker Error Undefined reference in Singleton class

本文关键字:未定义 引用 单例类 链接 错误 c++      更新时间:2023-10-16

我正在尝试将这个java单例类移植到c++:

public class Singleton {
private static Singleton uniqueInstance;
private Singleton() {} 
public static Singleton getInstance() {
    if (uniqueInstance == null) {
        uniqueInstance = new Singleton();
    }
        return uniqueInstance;
    }
}

我移植到这个c++代码:

class Singleton {
private:
  Singleton() {
    cout << "new Singleton is called" << endl;
  }
  static Singleton* uniqueInstance;
public:
   static Singleton* getInstance() {
    if (!uniqueInstance) {
      uniqueInstance = new Singleton();
    }
    return uniqueInstance;
  }
};

但是我不能编译这个!

确保在声明之外定义static成员:

Singleton* Singleton::uniqueInstance = nullptr;

您的cpp文件可能没有为需要添加的静态实例保留空间Singelton* Singleton::uniqueInstance = NULL;到您的cpp文件,然后在第一次调用

中分配它