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

时间:2016-10-11 19:58:22

标签: c++ visual-c++ static class-members

我有一节课,让我们称之为Foo 当我在标题中的类中包含以下行时,Foo不会编译。

static std::vector<UnvalidatedSocket*> unvalidatedSockets;

以及cpp。

中的以下行
            Foo::unvalidatedSockets.push_back(new UnvalidatedSocket(ClientSocket));

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

错误为LNK2001, unresolved external symbol

为什么会这样? 静态类成员会尽早被包含在内吗?

1 个答案:

答案 0 :(得分:1)

在尝试将某些内容推送到CPP文件之前,您需要在CPP文件中的某个位置初始化静态成员。添加如下内容:

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