サンプル
class
MyClass
{
public
:
MyClass&
operator
=(
const
MyClass& rhs);
private
:
int
field;
};
MyClass
&
MyClass
::
operator
=(
const
MyClass
& rightValue)
{
if
(rightValue.field ==
this
.field){
return
rightValue
;
}
}
ソリューション
自身と同等であるかどうかを、最初に代入演算子内で検査します。
class
MyClass
{
public
:
MyClass&
operator
=(
const
MyClass& rhs);
private
:
int
field;
};
MyClass
&
MyClass
::
operator
=(
const
MyClass
& rightValue)
{
if
(
this
== &rightValue){
//アドレスを比較します
return
*
this
;
}
if
(rightValue.field ==
this
.field){
return
*
this
;
}
}