Почему я должен объявлять статический вектор? - PullRequest
0 голосов
/ 25 мая 2018

Я должен создать класс со статическим вектором в качестве переменной.

   using namespace std;

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

В файле .cpp я получил неопределенную ссылку на вектор, и мне сказали, что я долженобъявите это сначала

vector<Player> Foo::PLAYERS;

Мой вопрос: что конкретно делает эта декларация?Это похоже на конструктор класса?Если бы вектор не был статичным, я бы все равно должен был это объявить?

1 Ответ

0 голосов
/ 25 мая 2018

В вашем заголовочном файле вы объявили вектор.Этот вектор имеет ключевое слово static, поэтому каждый экземпляр класса Foo будет использовать этот единственный и единственный вектор.

Вам также необходимо определить вектор.Вы не можете сделать это вне класса, так как это приведет к ошибке компилятора.Таким образом, в исходном файле вы написали:

vector<Player> Foo::PLAYERS;

, что является определением .

Я бы не сказал, что это похоже на конструктор, носкорее как, потому что может быть только один экземпляр вашего вектора (таким образом, вы не можете иметь его в конструкторе Foo).

Мне нравится думать, что это случай переменной, объявленной как extern вфайл заголовка, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...