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;
我有一个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;