私はLocation
というクラスを持っており、そのメンバー変数にCArrayを追加する必要がありました。この変更により、代入演算子のオーバーロードが必要になりました。C++のオーバーロード代入演算子
変更を加える前にコピーされていたこのクラスタイプのすべての変数をコピーし、個々のメンバ変数を個別にコピーせずにCArrayをコピーする追加コードを追加する方法はありますか?
Location& Location::operator=(const Location &rhs)
{
// Only do assignment if RHS is a different object from this.
if (this != &rhs)
{
//Copy CArray
m_LocationsToSkip.Copy(rhs.m_LocationsToSkip);
//Copy rest of member variables
//I'd prefer not to do the following
var1 = rhs.var1;
var2 = rhs.var2;
//etc
}
return *this;
}
ですから、実際には、コンパイラが生成した代入演算子を呼び出すようにしたいですか? 'CArray'に代入演算子がありますか? –
コピーコンストラクタはありますが、代入演算子はありません。私はCArrayメンバ変数を追加したのでコンパイラが生成した代入演算子を呼び出すことができるかどうかはわかりません。 –
いいえ、コンパイラが生成したコンパイラを呼び出すことはできません。なぜなら、コンパイラ生成時に生成されないからです。(CArrayメンバを追加したためではなく、コンパイラが生成したクラスだけが、 1つは存在しないためCArray用です)。私はこれを行う方法がないと思います。 –