gpt4 book ai didi

c++ - 包含 vector 的对象指针的 vector 最终指向同一个对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:19:59 26 4
gpt4 key购买 nike

我将多个对象存储在指向这些对象的指针 vector 中,就像在 C++ 中一样:

vector<Host *> somevector;

然后我像这样初始化每个项目:

somevector.push_back(new Host(x));

该对象接受一个初始化参数。当我读取数据(字符串)并以对象指针列表结束时,我将它们添加到对象本身的内部 vector 中:

somevector.at(i)->add(string data);

但是,看起来所有数据都已添加到同一个对象中,即使对象具有不同的名称,但它们存储此数据的内部 vector 是相同的。

我搜索了各种关键字来解决这个问题,我认为这是复制构造函数的问题(我目前使用的是默认值)。我如何解释我正在复制的对象内部的 vector ?我是否必须使对象中的 vector 成为一个字段,以便在复制构造函数中创建一个新的字段?

编辑:

我已经复制了对象类的代码:

vector<string> v;

Host::Host(string _x): x(_x)
{
}

Host::~Host()
{
}

string Host::name()
{
return x;
}

string Host::link(int r)
{
int i = r % v.size();
return v.at(i);
}

void Host::add(string data)
{
v.push_back(data);
}

所以我在宿主对象中使用这个 vector 来存储一堆字符串。然后,当我从我的主程序调用 link 时,我将一个随机数传递给它,我想从对象内部的列表中获取一个随机字符串。但是,我的 link() 调用返回了不应存储到对象中的字符串。

最佳答案

从您发布的示例代码中我可以看出,“v”不是主机的成员对象。所以对 Host::add 的调用只是推回一个全局可用的 vector 。这可能是您的问题所在?

关于c++ - 包含 vector 的对象指针的 vector 最终指向同一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5621417/

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