将一个对象添加到C++; 我正在做C++课程的作业。

将一个对象添加到C++; 我正在做C++课程的作业。,c++,class,object,C++,Class,Object,我必须创建操作符+=,它将向另一组对象添加一个对象 那么,如何在这里实现运算符+=呢 class classNew { anotherClass *my_objects; public: // TODO: classNew(int, char const *) classNew operator+=(const anotherClass & rhs); }; int main() { classNew d1(7, "w"); anotherCla

我必须创建
操作符+=
,它将向另一组对象添加一个对象

那么,如何在这里实现运算符+=呢

class classNew
{
    anotherClass *my_objects;
public:
    // TODO: classNew(int, char const *)
    classNew operator+=(const anotherClass & rhs);
};

int main()
{
    classNew d1(7, "w");
    anotherClass sgs[5];
    // somehow init sgs[0]..[4]?

    for (int i=0; i<sizeof(sgs)/sizeof(*sgs); ++i)
        d1 += sgs[i];
}

除非您的
操作符+=
打算修改您正在添加的对象(这是非常不寻常的),否则我建议对签名进行两个简单的更改:

classNew & classNew::operator+=(const anotherClass& rhs);
您总是希望返回对该类的引用,否则会得到一个副本

在您的类中有一个指向另一个类的指针,我假设这实际上是一个指向数组的指针。您只需将传递的
rhs
复制到阵列中的适当位置,重新分配并在必要时增加它。如果我的假设不正确,您只需要执行为您的类定义的任何加法


如果这不是一个赋值,我还建议将指针替换为
std::vector

,除非您的
操作符+=
打算修改您添加的对象,这将是非常不寻常的,我建议对签名进行两个简单的更改:

classNew & classNew::operator+=(const anotherClass& rhs);
您总是希望返回对该类的引用,否则会得到一个副本

在您的类中有一个指向另一个类的指针,我假设这实际上是一个指向数组的指针。您只需将传递的
rhs
复制到阵列中的适当位置,重新分配并在必要时增加它。如果我的假设不正确,您只需要执行为您的类定义的任何加法



如果这不是一个任务,我还建议将指针替换为
std::vector

在没有
+=
的情况下,它们是如何添加的?放一个干净的代码示例,显示您到目前为止拥有的内容,很难理解您在这里编写的内容。您可以保持问题的原样,添加代码应该可以为我们澄清:)我添加了问题陈述的直译代码-是否正确?如果代码版本准确,我将删除旧文本:IMO代码更好地用代码描述如果有遗漏,请将其添加到代码中!在没有
+=
的情况下,它们是如何被添加的?放一个干净的代码示例,显示您到目前为止所拥有的,很难理解您想要从这里写什么。您可以保持问题的原样,添加代码应该可以为我们澄清:)我添加了问题陈述的直译代码-是否正确?如果代码版本准确,我将删除旧文本:IMO代码更好地用代码描述如果有遗漏,请将其添加到代码中!嗨,马克,谢谢你的回答。我在我的问题上已经更新了一点,关于我的代码< >运算符+= 。但是我不确定这是不是正确的方式。@ Ali,你的代码更新看起来很不错,但是考虑一下<代码> NYSEG < /C>应该是什么。@ MalkSSOM,我几乎已经把<<代码> RHS对象作为代码> const 类似于你的建议。我同意。除非n_seg不是@MarkRansom,否则看起来你没有问题。我对此有点困惑。假设我使用10个对象delacare,然后我想从main添加一个对象,使其成为11个对象,所以只需使用像
this->my_objs[n_seg]=seg这会起作用吗?嗨@马克,谢谢你的回答。我在我的问题上已经更新了一点,关于我的代码< >运算符+= 。但是我不确定这是不是正确的方式。@ Ali,你的代码更新看起来很不错,但是考虑一下<代码> NYSEG < /C>应该是什么。@ MalkSSOM,我几乎已经把<<代码> RHS对象作为代码> const 类似于你的建议。我同意。除非n_seg不是@MarkRansom,否则看起来你没有问题。我对此有点困惑。假设我使用10个对象delacare,然后我想从main添加一个对象,使其成为11个对象,所以只需使用像
this->my_objs[n_seg]=seg这能起作用吗?