在C ++中将一个对象添加到另一组对象

时间:2012-07-27 16:26:53

标签: c++ class object

我正在C ++课程中完成我的作业。

我必须创建operator+=,它会将对象添加到另一组对象。

那么,我如何实现operator + = here?

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

更新

我有类似的东西

newClass newClass::operator+=(const anotherClass& seg){

this->my_objs[n_seg] = seg;

return *this;

}

1 个答案:

答案 0 :(得分:4)

除非你的operator+=打算修改你正在添加的对象,这是非常不寻常的,我建议一次对签名进行两次简单的更改:

classNew & classNew::operator+=(const anotherClass& rhs);

您总是希望将引用返回给班级,否则您会获得副本。

你的类中有一个指向anotherClass的指针,我认为这实际上是一个指向数组的指针。您只需将传递的rhs复制到阵列中的适当位置,重新分配并在必要时增长。如果我的假设不正确,你只需要为你的班级做任何额外的定义。

如果这不是作业,我还建议用std::vector<anotherClass>替换指针。