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) );