2012-04-04 122 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