【问题标题】:C++ Singleton fail to link on Mac OSC++ Singleton 无法在 Mac OS 上链接
【发布时间】:2012-08-24 03:11:29
【问题描述】:

我正在尝试使用 Xcode 在 C++、Mac OS 上创建一个非常经典的单例 我创建类 MySingleton 如下:

class MySingleton{
private:
    int val;
    static MySingleton *instance;
    MySingleton(){
        val = 0;
    }
public:
    int getVal(){
        return val;
    }
    void setVal(int iVal){
        val = iVal;
    }
    static MySingleton* getInstance(){
        if(instance == NULL)
            instance = new MySingleton();
        return instance;
    }

};

链接器抱怨 static MySingleton* getInstance() 按照链接器消息:

架构 x86_64 的未定义符号:“MySingleton::instance”, 参考自: main.old 中的 MySingleton::getInstance():找不到体系结构 x86_64 的符号 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)

有人可以帮忙吗?也许我需要在 Xcode 上设置一些东西,顺便说一下,它是 4.2.1 版,我无法做到这一点。 谢谢。

【问题讨论】:

  • 据我所知,您已经声明了static MySingleton *instance,但还没有在任何地方定义它。
  • 太傻了!!!!谢谢 ta.speot.is!!!

标签: c++ macos


【解决方案1】:

你需要在你的 cpp 文件中定义静态变量,像这样:

MySingleton *MySingleton::instance = 0;

【讨论】:

    【解决方案2】:

    静态成员 MySingleton 需要在 cpp 文件中定义。在标题中,您只声明了它。更多信息请参见:Why do static variables need to be declared twice in C++

    【讨论】:

      【解决方案3】:

      据我所知,您已经声明了 static MySingleton *instance,但还没有在任何地方定义它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-06
        • 1970-01-01
        • 2015-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-01
        相关资源
        最近更新 更多