我正在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;
}
答案 0 :(得分:4)
除非你的operator+=
打算修改你正在添加的对象,这是非常不寻常的,我建议一次对签名进行两次简单的更改:
classNew & classNew::operator+=(const anotherClass& rhs);
您总是希望将引用返回给班级,否则您会获得副本。
你的类中有一个指向anotherClass
的指针,我认为这实际上是一个指向数组的指针。您只需将传递的rhs
复制到阵列中的适当位置,重新分配并在必要时增长。如果我的假设不正确,你只需要为你的班级做任何额外的定义。
如果这不是作业,我还建议用std::vector<anotherClass>
替换指针。