gpt4 book ai didi

C++ 类/vector 指针问题

转载 作者:太空狗 更新时间:2023-10-29 21:05:07 29 4
gpt4 key购买 nike

我正在尝试使用一个类的指针 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);

最佳答案

数据成员在类中默认是私有(private)的。因此,您的 cur_roomname 变量在 Agent 和 Grue 类中是不同的。当您调用 Grue 构造函数时,Grue 字段已初始化,但 vector 存储代理指针,因此您正在访问未初始化的代理字段。

正确的做法是:

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

}
};

关于C++ 类/vector 指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10762547/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com