C++ 将对象添加到矢量会导致“矢量”;没有类类型异常;

C++ 将对象添加到矢量会导致“矢量”;没有类类型异常;,c++,C++,以下代码在将对象添加到向量的行中抛出上述错误消息: include "palm.h" include <vector> using namespace std; class forehead { public: void palmstrikesforehead(float x, float y, float z); private: vector<palm> palms; }; void forehead::palmstrikesforeh

以下代码在将对象添加到向量的行中抛出上述错误消息:

include "palm.h"
include <vector>

using namespace std;

class forehead {
  public:
    void palmstrikesforehead(float x, float y, float z);
  private:
    vector<palm> palms;

};

void forehead::palmstrikesforehead(float x, float y, float z) { 
  Palm::Palm palm(x,y,z);
  palms.push_back(palm); //Exception thrown if this line is not commented out.
}
包括“palm.h”
包括
使用名称空间std;
班额{
公众:
虚空掌纹前额(浮动x、浮动y、浮动z);
私人:
矢量棕榈;
};
虚空前额::掌纹前额(浮动x、浮动y、浮动z){
手掌:手掌(x,y,z);
palms.push_back(palm);//如果此行未注释掉,将引发异常。
}

该代码适用于整数类型的向量,但不适用于Palm类型的向量。我想做的是匿名地将Palm添加到向量中(如java:
arrayList.add(newpalm(x,y,z));
。这是怎么做的?

类名似乎是
Palm
。因此您应该编写

  palm the_palm (x, y, z);
//^^^^
  palms.push_back(the_palm);
或者,您可以在适当的位置构建手掌:

  palms.push_back(palm(x, y, z));

如果
Palm
是正确的类名(您不会得到编译错误),那么
Palm::Palm Palm(x,y,z);
应该是
Palm Palm(x,y,z);

{
公众:
虚空掌纹前额(浮动x、浮动y、浮动z);
私人:
矢量棕榈;
};

这在目前是不可能解决的,因为我们不知道掌上电脑是什么,更不用说它叫什么了

假设Palm是您自己的类,那么您的复制构造函数可能存在问题。您的类是否遵守“3的规则”

若要“匿名添加”,假设您的类名为palm,您将执行以下操作:

palms.push_back( palm(x,y,z) );

什么样的变种人前额上有手掌?命名为
Palm
Palm
?Facepalm的类型是否与掌心到脸的类型相同?不会抛出任何异常!这是一个编译器错误。其他人提供了解决方案。或者将
vector palms;
更改为
vector palms;
@crush:除非在
Palm
名称空间或类,我认为
Palm::Palm
是一个错误。在C++11中,您可以更适当地构造它:
palms.emplace_back(x,y,z);
palms.push_back( palm(x,y,z) );