【问题标题】:Linker Error : UnResolved External Symbol Issue [duplicate]链接器错误:未解决的外部符号问题 [重复]
【发布时间】:2013-01-30 01:57:21
【问题描述】:

可能重复:
What does it mean to have an undefined reference to a static member?

目前我有以下代码 文件: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)  

【问题讨论】:

标签: c++


【解决方案1】:

你声明但没有定义你的静态成员

TestClass* TClass;

在 .cpp 文件中初始化:

TestClass* TestClass::TClass=NULL;

【讨论】:

  • +1:我不完全确定为什么这被否决了。除非其他人都有通灵的护目镜,并且知道静态 class-var TestClass::TClass 分配在类外的静态空间中的某个地方,否则这是正确的答案,而这正是编译器所抱怨的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 2023-03-18
  • 2014-06-27
  • 1970-01-01
相关资源
最近更新 更多