visual c++静态与非静态类成员

visual C++ static vs non static class members

本文关键字:静态类 成员 c++ 静态 visual      更新时间:2023-10-16

我有一个类,我们叫它Foo当我在头文件的类中包含以下行时,Foo不编译。

static std::vector<UnvalidatedSocket*> unvalidatedSockets;

和cpp的下一行。

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

当我把static关键字拿走时,它编译得很好。我检查了循环包含,但没有。

错误是LNK2001, unresolved external symbol

为什么会发生这种情况?静态类成员在前面包含吗?

您需要在CPP文件的某个地方初始化静态成员,然后再尝试向其推送一些内容。添加如下内容:

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