1

重複の可能性:
静的メンバーへの未定義の参照があるとはどういう意味ですか?

現在、次のコードファイルがあります:TestClass.h

class TestClass
{

private:
    int i;
    static TestClass* TClass;

public:

    static TestClass* GetClass()
    {
        if(TClass==NULL)
        {
            TClass = new TestClass();
            return TClass;
        }
        else
        {
            return TClass;
        }
    }//end method

    int Geti()
    {
        return i;
    }

    void Seti(int a)
    {
        i = a;
    }
};

これで、ヘッダーを次のように含めた後、cppファイルにメソッドがあります。

declspec(dllexport) int __stdcall GetVar()
{

    TestClass *TClass = TestClass::GetClass();
    return TClass->Geti();
}

私が得るエラーは次のとおりです。

Error   8   error LNK2001: unresolved external symbol "private: static class TestClass * TestClass::TClass" (?TClass@TestClass@@0PEAV1@EA)  
4

1 に答える 1

2

あなたはあなたの静的メンバーを宣言しましたが、定義していません

TestClass* TClass;

.cpp ファイルで初期化します。

TestClass* TestClass::TClass=NULL;
于 2013-01-30T02:01:04.043 に答える