繁体   English   中英

包含向量的对象指针的向量最终指向同一对象

[英]Vector of object pointers containing vectors end up pointing to same object

我在C ++中将多个对象存储在指向这些对象的指针的向量中:

vector<Host *> somevector;

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

somevector.push_back(new Host(x));

该对象带有一个初始化参数。 当我读取数据(字符串)并得到对象指针列表时,我将它们添加到对象本身内部的内部向量中:

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

但是,似乎所有数据都已添加到同一对象,即使这些对象具有不同的名称,它们存储此数据的内部向量也相同。

我搜索了各种关键字来解决此问题,我认为这是复制构造函数的问题(我目前使用默认值)。 如何计算要复制的对象内的向量? 我是否必须将对象中的向量设置为字段,以便在复制构造函数中创建一个新的向量?

编辑:

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

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);
}

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

从示例代码中可以看到,您发布的“ v”不是Host的成员对象。 因此,对Host :: add的调用只是将其推回到全局可用的向量。 这也许是您的问题所在吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM