2012-04-04 21 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

参考までに、これは「最も厄介な解析」(http://en.wikipedia.org/wiki/Most_vexing_parse)として知られています。 –

+0

情報ありがとうございました – Mete

+0

あなたは常にあなたが得るエラーを含める必要があります。種類やエラーメッセージを投稿せずに、あるいはエラーがコンパイル時であるか実行時であるかを示すことなく、「間違っていることが分からない」と言うだけで、役に立つ回答を受け取ることができなくなる可能性があります。このコードは、これが問題ではないほど簡単ですが、とにかくポリシーの問題としてそれを行います。 –

答えて

4

変更 -

vector<nave> naves; 
4

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

ベクトルだけで他のクラスのようなものです。したがって、それを宣言します。

vector<nave> naves; 
+0

g ++は、「naves.push_back(nave);」内の「expected primary-expression before」)トークン「 」を返し続けます。行 – Mete

+3

クラス自体をプッシュすることはできません。代わりに、クラスのオブジェクトをプッシュする必要があります。だから、 'naves.push_back(nave());'を実行してください。 '()'に気をつけてください。 – Mahesh

+0

@Mahesh Good catch!私はそれを見たことがなかった! – MPelletier

2

これを行う:古いライン

vector<nave> naves; 
naves.push_back(nave()); 
  • vector<nave> naves();は、関数宣言と解釈されました。
  • 古い行:naves.push_back(nave);は実際にnaveをインスタンス化しませんでした。
関連する問題