2

我正在尝试使用 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;
    }

};

链接器抱怨静态 MySingleton* getInstance() 遵循链接器消息:

架构 x86_64 的未定义符号:“MySingleton::instance”,引用自:MySingleton::getInstance() in main.o ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用-v 查看调用)

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

4

3 回答 3

5

您需要在 cpp 文件中定义静态变量,如下所示:

MySingleton *MySingleton::instance = 0;
于 2012-08-24T03:15:50.963 回答
1

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

于 2012-08-24T03:57:49.510 回答
1

静态成员 MySingleton 需要在 cpp 文件中定义。在标题中,您只声明了它。有关更多信息,请参阅此内容:为什么需要在 C++ 中声明两次静态变量

于 2012-08-24T03:16:47.107 回答