Здесь есть два простых варианта. Ближе к тому, что вы написали, используйте объявление extern
в заголовочном файле:
// something.h
extern vector<Card> cards;
// something.cpp
vector<Card> cards;
Или, если имеет смысл, чтобы этот вектор "принадлежал" class Card
(но есть только один из них), вы можете сделать его членом static
:
// Card.h
class Card {
// ...
static void init_cards();
static vector<Card> cards;
};
// Card.cpp
vector<Card> Card::cards;
Член static
может быть public
или private
, как и любой другой участник. Если это public
, любой код, который не входит в метод Card
, использующий cards
, должен будет вызвать его Card::cards
.
В любом случае, вы должны выяснить, как инициализировать его с содержимым, которое вы хотите ....