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+=、これは非常に珍しいことですが、署名に2つの簡単な変更を加えることをお勧めします。

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

クラスへの参照を常に返したい場合は、それ以外の場合はコピーを取得します。

クラスにポインタがanotherClassあります。これは実際には配列へのポインタだと思います。渡されたものを配列内の適切な場所にコピーしrhs、再割り当てして、必要に応じて拡張するだけです。私の仮定が正しくない場合は、クラスに対して定義されている追加を行う必要があります。

これが割り当てでない場合は、ポインタを。に置き換えることもお勧めしますstd::vector<anotherClass>

于 2012-07-27T16:32:55.323 に答える