オブジェクトのベクトルを作成しようとしていますが、何がうまくいかないのか分かりません。ここオブジェクトのベクトルを作成しようとしています
コード
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();
オブジェクトのベクトルを作成しようとしていますが、何がうまくいかないのか分かりません。ここオブジェクトのベクトルを作成しようとしています
コード
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();
変更 -
vector<nave> naves;
へ
vector<nave> naves(); // naves() is a function declaration whose return type
// is vector<nave>
ベクトルだけで他のクラスのようなものです。したがって、それを宣言します。
vector<nave> naves;
g ++は、「naves.push_back(nave);」内の「expected primary-expression before」)トークン「 」を返し続けます。行 – Mete
クラス自体をプッシュすることはできません。代わりに、クラスのオブジェクトをプッシュする必要があります。だから、 'naves.push_back(nave());'を実行してください。 '()'に気をつけてください。 – Mahesh
@Mahesh Good catch!私はそれを見たことがなかった! – MPelletier
これを行う:古いライン
vector<nave> naves;
naves.push_back(nave());
vector<nave> naves();
は、関数宣言と解釈されました。naves.push_back(nave);
は実際にnave
をインスタンス化しませんでした。
参考までに、これは「最も厄介な解析」(http://en.wikipedia.org/wiki/Most_vexing_parse)として知られています。 –
情報ありがとうございました – Mete
あなたは常にあなたが得るエラーを含める必要があります。種類やエラーメッセージを投稿せずに、あるいはエラーがコンパイル時であるか実行時であるかを示すことなく、「間違っていることが分からない」と言うだけで、役に立つ回答を受け取ることができなくなる可能性があります。このコードは、これが問題ではないほど簡単ですが、とにかくポリシーの問題としてそれを行います。 –