C ++类/向量指针问题

时间:2012-05-25 23:53:55

标签: c++ pointers vector

我正在尝试使用类的指针向量。当试图访问Agent类的任何成员时,我得到一个错误的指针或空数据。代码如下。

class Grue : public Agent
{
    string name;
    Room *cur_room;
 public:
   Functions()....
};

class Agent
{
        Room *cur_room;
        string name;
  public:
         Functions()....
};


Grue* Grue1 = new Grue("Test", roompointer);
vector<Agent*> agents;
agents.push_back(Grue1);

1 个答案:

答案 0 :(得分:4)

默认情况下,数据成员在类中是私有的。因此,您的 cur_room 名称变量在Agent和Grue类中是不同的。 当您调用Grue构造函数时,Grue字段被初始化,但向量存储代理指针,因此您正在访问未初始化的代理字段。

这是正确的方法:

class Agent
{
protected:
    Room *cur_room;
    string name;
public:
    Agent(string n, Room * r)
    : cur_room (r), name(n)         
    {}
};

class Grue : public Agent
{

public:
    Grue(string n, Room * r):Agent(n,r)
    {

    }
};