我是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)
我的代码出了什么问题?
答案 0 :(得分:2)
第一个答案是正确的。这背后的原因是您需要为类定义之外的静态对象分配内存。如果在头文件中定义该类,并将其包含在多个cpp文件中,则编译器不知道您希望在何处以及如何创建“帮助器”指向的对象。
答案 1 :(得分:1)
你需要定义Test :: helper。在课外写这样的东西:
Helper* Test::helper = new Helper;