我应该创建一个具有静态向量作为变量的类。
using namespace std;
class Foo
{
public:
static vector<Player> PLAYERS;
};
在.cpp文件中,我得到了一个未定义的向量引用,我被告知必须首先声明它
vector<Player> Foo::PLAYERS;
我的问题是这个宣言究竟做了什么?它类似于类的构造函数吗?如果向量不是静态的,我仍然需要声明它吗?
答案 0 :(得分:0)
在头文件中,声明了向量。该向量具有关键字static
,因此类Foo
的每个实例都将共享该唯一的向量。
您还需要定义向量。你不能在课外进行,因为这会导致编译器错误。因此,在源文件中,您写道:
vector<Player> Foo::PLAYERS;
是定义。
我不会说它类似于构造函数,而是因为你的向量只能有一个实例(因此你不能在Foo
的构造函数中拥有它。)
我喜欢将其视为头文件中声明为extern
的变量的情况,如果有帮助的话。