繁体   English   中英

Singleton类中的C ++链接器错误未定义引用

[英]C++ Linker Error Undefined reference in Singleton class [duplicate]

这个问题已经在这里有了答案:

我正在尝试将此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;
  }
};

但是我不能编译这个! 和gcc链接器错误发生。

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

Singleton* Singleton::uniqueInstance = nullptr;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM