2012-10-02 226 views
-2

我有一個簡單的自定義類,Foo,我想製作一個向量Foo對象。在我的.h文件我宣佈載體是這樣的:C++矢量初始化

std::vector<Foo> bar; 

我再嘗試並初始化它在.cpp文件這樣的能力:

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

美孚具有自定義構造函數:

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>()' 

如何初始化自定義對象的向量?

+5

這不是實際的代碼。請發佈你寫的*真實*代碼。 –

+0

'Foo'是否有默認構造函數? – Krumelur

+3

他可能做了'vector bar()'或者什麼 –

回答

0

編譯器認爲bar是一個函數(不帶參數並返回vector<Foo>),而不是vector<Foo>類型的變量。所以你在某處放了一些錯誤的括號。

0

首先你要在各自的本地範圍內創建一個新對象,我猜你不想這樣做。

要回答這個問題,要麼把:

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

或存取權限的成員對象:

bar.resize(10); 

//確保你包括<矢量>頭或使用正確的命名空間/