为什么我必须声明一个静态向量?

时间:2018-05-25 07:34:49

标签: c++ oop

我应该创建一个具有静态向量作为变量的类。

   using namespace std;

class Foo
{
public:
    static vector<Player> PLAYERS;
};

在.cpp文件中,我得到了一个未定义的向量引用,我被告知必须首先声明它

vector<Player> Foo::PLAYERS;

我的问题是这个宣言究竟做了什么?它类似于类的构造函数吗?如果向量不是静态的,我仍然需要声明它吗?

1 个答案:

答案 0 :(得分:0)

在头文件中,声明了向量。该向量具有关键字static,因此类Foo的每个实例都将共享该唯一的向量。

您还需要定义向量。你不能在课外进行,因为这会导致编译器错误。因此,在源文件中,您写道:

vector<Player> Foo::PLAYERS;

定义

我不会说它类似于构造函数,而是因为你的向量只能有一个实例(因此你不能在Foo的构造函数中拥有它。)

我喜欢将其视为头文件中声明为extern的变量的情况,如果有帮助的话。