使用静态时未解析的外部符号

时间:2014-12-13 20:27:43

标签: c++

我是c ++的新手。我现在开始上课,我对静力学有一个noob问题。

class Test
{
public:
    Test(){};
    ~Test(){};
    static void test();
    static Helper* helper;
};

void Test::test()
{
    Object obj = Test::helper->getObject();
    //...
}

当我尝试编译它时会出现错误:

main.obj : error LNK2001: unresolved external symbol "public: static class Helper* Test::helper" (?helper@Test@@2PAVHelper@@A)

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

第一个答案是正确的。这背后的原因是您需要为类定义之外的静态对象分配内存。如果在头文件中定义该类,并将其包含在多个cpp文件中,则编译器不知道您希望在何处以及如何创建“帮助器”指向的对象。

答案 1 :(得分:1)

你需要定义Test :: helper。在课外写这样的东西:

Helper* Test::helper = new Helper;