Ali
Ali

Reputation: 10453

Add one object to another set of objects in C++

I'm working on my assignment in C++ course.

I have to create operator+= which will add an object to another set of object.

So, how do I implement 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];
}

UPDATE:

I have something like this

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

this->my_objs[n_seg] = seg;

return *this;

}

Upvotes: 1

Views: 1757

Answers (1)

Mark Ransom
Mark Ransom

Reputation: 308120

Unless your operator+= is intended to modify the object you're adding, which would be highly unusual, I'd suggest one two simple changes to the signature:

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

You always want to return a reference to the class, otherwise you get a copy.

You have a pointer to anotherClass in your class, I assume that this is actually a pointer to an array. You simply have to copy the passed rhs to the appropriate spot in your array, reallocating it and growing it if necessary. If my assumption is incorrect, you just need to do whatever addition is defined as for your class.

If this weren't an assignment I would also suggest replacing the pointer with a std::vector<anotherClass>.

Upvotes: 4

Related Questions