我有一节课,让我们称之为Foo
当我在标题中的类中包含以下行时,Foo
不会编译。
static std::vector<UnvalidatedSocket*> unvalidatedSockets;
以及cpp。
中的以下行 Foo::unvalidatedSockets.push_back(new UnvalidatedSocket(ClientSocket));
当我取走static
关键字时,它编译得很好。
我检查了循环包含,但没有。
错误为LNK2001, unresolved external symbol
为什么会这样? 静态类成员会尽早被包含在内吗?
答案 0 :(得分:1)
在尝试将某些内容推送到CPP文件之前,您需要在CPP文件中的某个位置初始化静态成员。添加如下内容:
std::vector<UnvalidatedSocket*> Foo::unvalidatedSockets;