我是C ++编程的新手,想知道是否有人可以为我解决这个问题?

我将在此处使用一些示例来回答我的问题。

假设在我的主类中,我从Blue类创建了一个Bob对象,

Blue Bob("bob", 3);

Blue类具有一个“名称”和该类内部向量的大小。

现在让我们介绍另一个类Red,它具有四个参数并具有三个对象,

Red GasPoweredStick("M000", "It never runs out of gas!", 1, 40);
Red Ozone("AFXE", "Filler", 4, 3);
Red Jupiter("KCAT", "Planets make terrible dinner guests", 99, 191919);

我想将红色对象添加到Bob对象下的Blue类中的向量中,然后使用这些参数执行操作,

Bob.addItem(GasPoweredStick);
Bob.addItem(Ozone);
Bob.addItem(Jupiter);

导致此“ addItem”代码,

void Blue::addItem(Red&)
{
    Items.push_back(Red());
}

我认为我的问题在于上面的代码...问题是Red对象的参数信息默认为其构造函数的值,使它们全部为空白或0。而不是填充已创建对象的信息。 之所以无法自己解决却无法解决的原因是因为这是我正在从事的一项工作,但是我目前对c ++的学习并未提及此特定问题。 该代码是根据模板或先验知识创建的。

我对c ++没有太多经验,但是我猜想addItem函数并没有吸收创建的三个对象,而是每次我要求它推送一个新对象时都复制基本Red类。

我将不胜感激任何帮助! 我希望我足够清楚。 如果需要的话,我会尽力清除。

===============>>#1 票数:3

这行:

Items.push_back(Red());

您使用默认构造函数推回新创建的Red对象。 只需传递参考即可:

void Blue::addItem(const Red& r)
{
    Items.push_back(r);
}

===============>>#2 票数:0

您的Red类应具有复制构造函数和赋值运算符:

void Red::Red(const Red& other)
{
(*this) = other;
}

Red& Red::operator=(const Red& other)
{
this->Name = other.Name; 
// TODO: copy other fileds
return (*this);
}

  ask by Crazierinzane translate from so

未解决问题?本站智能推荐: