Я предполагаю, что вы хотите, чтобы вектор размером 1024 в качестве общей переменной использовался во всех ваших классах. Вы могли бы это сделать:
class MyClass {
static std::vector<int> s_my_vector;
}
Этот код заходил в ваш файл заголовка. В вашем файле cpp вам нужно будет инициализировать std :: vector. Однако я не рекомендую это делать. Статические переменные класса, для которых требуются вызовы конструктора (т. Е. Не примитивы или типы POD), имеют много ошибок, которые я не планирую включать. Я буду предлагать лучшее решение однако:
class MyClass {
static std::vector<int> & GetMyVector()
{
static std::vector<int> my_vector;
static bool initialized = MyVectorInit(my_vector);
return my_vector;
}
static bool MyVectorInit(std::vector<int> & v)
{
v.resize(1024);
...
}
public:
MyClass() {
std::vector<int> & v = GetMyVector();
...
}
static void EarlyVectorInit()
{
GetMyVector();
}
}
В этом случае статическая локальная переменная гарантирует, что будет только одна копия my_vector, и вы можете получить ссылку на него по телефону GetMyVector. Кроме того, инициализированный статический bool гарантированно создается только один раз, а это значит, что MyVectorInit будет вызываться только один раз. Вы можете использовать этот метод, если вам нужно заполнить свой вектор каким-то нетривиальным способом, который не может быть выполнен в конструкторе. Как я его написал, ваш вектор будет создан автоматически в первый раз, когда вам нужно его использовать, что довольно удобно. Если вы хотите вручную инициировать создание по какой-либо причине, вызовите функцию EarlyVectorInit().
Передайте это значение в функции по ссылке, а не по значению, чтобы не создавать дополнительные копии. – CoryKramer
* 1024-dimmension int vector * Серьезно? – deviantfan
Что не так с глобальными переменными? если вам это не нравится - статическая переменная тоже будет работать –