Вы не можете писать операторы выражений , такие как egg.push_back(obj1);
в область файла / пространства имен , в отличие от объявлений / определений , таких как test obj1(1);
. Операторы выражения могут использоваться только в области видимости блока , то есть внутри тела функции. Например,
int main() {
egg.push_back(obj1);
egg.push_back(obj2);
egg.push_back(obj3);
}
Также избегайте использования глобальных переменных и поместите все объявления / определения переменных в локальную область видимости:
int main() {
test obj1(1);
test obj2(2);
test obj3(3);
std::vector<test> egg;
egg.push_back(obj1);
egg.push_back(obj2);
egg.push_back(obj3);
}
Также, вне зависимости от вопроса, используйте список инициализатора конструктора для инициализации членов, а не присвоение членам в теле конструктора:
test(int i) : id(i) {
}