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 回答