1

我正在做 C++ 课程的作业。

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

那么,如何在这里实现 operator+= 呢?

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;

}
4

1 回答 1

4

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

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

你总是希望返回对类的引用,否则你会得到一个副本。

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

如果这不是一个任务,我还建议用std::vector<anotherClass>.

于 2012-07-27T16:32:55.323 回答