C++ 静态与非静态 class 成员

C++ static vs non static class members

我有一个class,我们称它为Foo 当我在 header 中的 class 中包含以下行时,Foo 无法编译。

static std::vector<UnvalidatedSocket*> unvalidatedSockets;

和 cpp 中的以下行。

            Foo::unvalidatedSockets.push_back(new UnvalidatedSocket(ClientSocket));

当我去掉 static 关键字时,它编译得很好。 我检查了循环包含,但有 none.

错误是LNK2001, unresolved external symbol

为什么会这样? 静态 class 成员是否更早加入?

您需要先在 CPP 文件中的某处初始化您的静态成员,然后再尝试将某些内容推送到其中。添加如下内容:

std::vector<UnvalidatedSocket*> Foo::unvalidatedSockets;