2012-04-04 15 views
0

Ich versuche, einen Vektor von Objekten zu erstellen, ich weiß nicht, was schief läuft.Versuch, einen Vektor von Objekten zu erstellen

hier der Code

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, das ist bekannt als die [ärgerlichsten Parse] (http://en.wikipedia.org/wiki/Most_vexing_parse). –

+0

vielen Dank für die Informationen – Mete

+0

Sie sollten immer die Fehler, die Sie erhalten. Wenn Sie nur sagen "Ich weiß nicht, was schief läuft", ohne irgendeine Art oder Fehlermeldung zu senden oder anzugeben, ob der Fehler zur Kompilierungszeit oder zur Laufzeit vorliegt, können Sie möglicherweise keine hilfreichen Antworten erhalten. Dieser Code ist einfach genug, um dies nicht zu belasten, aber es ist sowieso eine Frage der Politik. –

Antwort

4

Change -

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

zu

vector<nave> naves; 
4

Ein Vektor wie jede andere Klasse. Erklären es so:

vector<nave> naves; 
+0

g ++ wiederhole immer "expected primary-expression before") "token" im "naves.push_back (nave);" Zeile – Mete

+3

Sie können die Klasse nicht selbst drücken. Stattdessen müssen Sie das Objekt einer Klasse schieben. Also, tun Sie - 'Naves.push_back (nave());'. Beachten Sie die '()' – Mahesh

+0

@Mahesh Guter Fang! Ich hatte das nicht gesehen! – MPelletier

2

tun:

vector<nave> naves; 
naves.push_back(nave()); 
  • Die alte Linie: vector<nave> naves(); als Funktionsdeklaration interpretiert wurde.
  • Die alte Zeile: naves.push_back(nave); hat nicht tatsächlich instanziiert nave.
Verwandte Themen