2

Xcodeを使用してC++、MacOSで非常に古典的なシングルトンを作成しようとしています。次のようにクラス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;
    }

};

Linkerが静的MySingleton*getInstance()について文句を言っています。Linker メッセージに従ってください。

アーキテクチャx86_64の未定義のシンボル: "MySingleton :: instance"、参照元:main.oのMySingleton :: getInstance()ld:アーキテクチャx86_64のシンボルが見つかりませんclang:エラー:リンカーコマンドが終了コード1で失敗しました(使用-v呼び出しを確認する)

誰かがこれを手伝ってもらえますか?おそらく、バージョン4.2.1であるXcodeに何かを設定する必要がありますが、これを行うことはできません。ありがとう。

4

3 に答える 3

5

次のように、cppファイルで静的変数を定義する必要があります。

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

静的メンバーMySingletonは、cppファイルで定義する必要があります。ヘッダーでは、それを宣言しただけです。詳細については、これを参照してください:静的変数をC++で2回宣言する必要があるのはなぜですか

于 2012-08-24T03:16:47.107 に答える
1

私が見る限り、あなたは宣言しましstatic MySingleton *instanceたが、どこにも定義していません。

于 2012-08-24T03:57:49.510 に答える