2012-04-04 123 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)。 – 2012-04-04 19:56:08

+0

謝謝你的信息 – Mete 2012-04-04 20:03:13

+0

你應該總是包含你得到的錯誤。如果不發佈任何類型或錯誤消息,或者指出錯誤是編譯時還是運行時,只是說「我不知道錯在哪裏」可能會阻止您收到有用的答案。這段代碼很簡單,但這不重要,但作爲一個策略問題無論如何。 – 2012-04-04 20:23:26

回答

4

變化 -

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

vector<nave> naves; 
4

矢量就像任何其他類。因此,它聲明:

vector<nave> naves; 
+0

g ++在「naves.push_back(nave);」中繼續返回「期望的主表達式」)'標記' 「行 – Mete 2012-04-04 19:59:31

+3

你不能自己推這個類。相反,你必須推動一個類的對象。所以,請做''naves.push_back(nave());'。注意'()' – Mahesh 2012-04-04 20:01:11

+0

@Mahesh好抓!我沒有看到那個! – MPelletier 2012-04-04 20:02:08

2

這樣做:

vector<nave> naves; 
naves.push_back(nave()); 
  • 舊線:vector<nave> naves();被解釋爲函數聲明。
  • 舊線:naves.push_back(nave);實際上並沒有實例nave