以下代码在将对象添加到向量的行中抛出上述错误消息:
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类型的向量。我想要做的是匿名将Palms添加到向量中(如java:arrayList.add(new Palm(x,y,z));
。如何做到这一点?
答案 0 :(得分:2)
班级名称似乎是palm
。所以你应该写
palm the_palm (x, y, z);
//^^^^
palms.push_back(the_palm);
或者你可以就地建造手掌:
palms.push_back(palm(x, y, z));
答案 1 :(得分:0)
如果Palm
是正确的类名(您没有收到编译错误),则Palm::Palm palm(x,y,z);
应为Palm palm(x,y,z);
答案 2 :(得分:0)
class forehead {
public:
void palmstrikesforehead(float x, float y, float z);
private:
vector<Palm::Palm> palms;
};
答案 3 :(得分:0)
目前无法解决这个问题,因为我们不知道Palm中的内容从不介意它的名称。
假设Palm是您自己的类,您的复制构造函数可能存在问题。你的班级是否遵守“3规则”?
要“匿名添加”,假设您的班级被称为掌心,您可以这样做:
palms.push_back( palm(x,y,z) );