2012-04-04 3 views
0

Я пытаюсь создать вектор объектов, я не знаю, что происходит не так.Пытается создать вектор объектов

здесь код

class nave { 
public: 
    void sx(int i); int x(); 
    void sy(int i); int y(); 
}; 
vector<nave> naves(); 
naves.push_back(nave); 
cout << naves.size(); 
+5

FYI, это известно как [наиболее неприятный анализ] (http://en.wikipedia.org/wiki/Most_vexing_parse). –

+0

Благодарим вас за информацию – Mete

+0

Вы всегда должны включать ошибки, которые вы получаете. Просто говоря: «Я не знаю, что происходит не так», не публикуя никаких сообщений о каком-либо виде или ошибке или не указывая, является ли ошибка компиляцией или временем выполнения, может помешать вам получить полезные ответы. Этот код достаточно прост, так как это не имеет значения, но в любом случае сделайте это как вопрос политики. –

ответ

4

Change -

vector<nave> naves(); // naves() is a function declaration whose return type 
         // is vector<nave> 

в

vector<nave> naves; 
4

вектор так же, как и любой другой класс. Объявите это таким образом:

vector<nave> naves; 
+0

g ++ сохранить возвращаемое «ожидаемое первичное выражение перед») «токен» в «naves.push_back (nave);» line – Mete

+3

Вы не можете нажать сам класс. Вместо этого вам нужно нажать объект класса. Итак, do - 'naves.push_back (nave());'. Обратите внимание на '()' – Mahesh

+0

@Mahesh Хороший улов! Я этого не видел! – MPelletier

2

ли это:

vector<nave> naves; 
naves.push_back(nave()); 
  • Старая линия: vector<nave> naves(); интерпретировалось как объявление функции.
  • Старая линия: naves.push_back(nave); фактически не создавал экземпляр nave.
Смежные вопросы