向向量添加对象导致“没有类类型异常”

时间:2012-02-22 14:20:20

标签: 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::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));。如何做到这一点?

4 个答案:

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