-2

単純なカスタム クラス があり、オブジェクトFooのベクトルを作成したいと考えていFooます。私の .h ファイルでは、次のようにベクトルを宣言します。

std::vector<Foo> bar;

次に、次のように .cpp ファイルに容量を持たせるように初期化します。

vector<Foo> bar;
bar.resize(10);

Foo にはカスタム コンストラクターがあります。

Foo(string name, int number)

コンパイルエラーが発生します:

a.cpp:20:6: error: request for member 'resize' in 'bar', 
which is of non-class type 'std::vector<Foo>()'

カスタム オブジェクトのベクトルを初期化するにはどうすればよいですか?

4

2 に答える 2

0

コンパイラーは、タイプの変数ではbarなく、関数(パラメーターを受け取らずに返す)であると見なします。だからあなたはどこかに間違ったブラケットを置いた。vector<Foo>vector<Foo>

于 2012-10-02T16:33:44.180 に答える
0

まず、それぞれのローカルスコープで新しいオブジェクトを作成していますが、これは実行したくないと思います。

質問に答えるには、次のいずれかを入力します。

std::vector<Foo> bar;
bar.resize(10);

またはメンバーオブジェクトにアクセスします。

bar.resize(10);

// <vector>ヘッダーを含めるか、正しい名前空間を使用していることを確認してください/

于 2012-10-02T16:37:33.787 に答える