C++ static против не статических членов класса
У меня есть класс, давайте назовем это Foo
Foo
не компилируется, когда я включаю следующую строку в класс в заголовке.
static std::vector<UnvalidatedSocket*> unvalidatedSockets;
и следующая строка в cpp.
Foo::unvalidatedSockets.push_back(new UnvalidatedSocket(ClientSocket));
когда я возьму static
Ключевое слово прочь компилируется просто отлично. Я проверил круговые включения, но их нет.
Ошибка LNK2001, unresolved external symbol
Почему это происходит? Участвуют ли статические ученики раньше?
1 ответ
Решение
Вам нужно инициализировать ваш статический член где-нибудь в файле CPP, прежде чем пытаться что-то вставить в него. Добавьте что-то вроде этого:
std::vector<UnvalidatedSocket*> Foo::unvalidatedSockets;