我試圖創建對象的矢量的矢量,我不知道什麼錯誤。試圖創建對象
這裏的代碼
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(); // naves() is a function declaration whose return type
// is vector<nave>
到
vector<nave> naves;
矢量就像任何其他類。因此,它聲明:
vector<nave> naves;
g ++在「naves.push_back(nave);」中繼續返回「期望的主表達式」)'標記' 「行 – Mete 2012-04-04 19:59:31
你不能自己推這個類。相反,你必須推動一個類的對象。所以,請做''naves.push_back(nave());'。注意'()' – Mahesh 2012-04-04 20:01:11
@Mahesh好抓!我沒有看到那個! – MPelletier 2012-04-04 20:02:08
這樣做:
vector<nave> naves;
naves.push_back(nave());
vector<nave> naves();
被解釋爲函數聲明。naves.push_back(nave);
實際上並沒有實例nave
。
僅供參考,這被稱爲[最令人頭疼的解析](http://en.wikipedia.org/wiki/Most_vexing_parse)。 – 2012-04-04 19:56:08
謝謝你的信息 – Mete 2012-04-04 20:03:13
你應該總是包含你得到的錯誤。如果不發佈任何類型或錯誤消息,或者指出錯誤是編譯時還是運行時,只是說「我不知道錯在哪裏」可能會阻止您收到有用的答案。這段代碼很簡單,但這不重要,但作爲一個策略問題無論如何。 – 2012-04-04 20:23:26