はoperator+
関数integer
type.Soなぜオペレータ関数から返されたオブジェクトを再利用
(obj+2)+3; //no match for 'operator+' (operand types are 'integer' and 'int')
ような関数の呼び出しを実行できないのオブジェクトを返し、次のオペレータオーバーロードシナリオ
class integer
{
public:
int a;
integer()
{
a = 0;
}
friend integer operator+(integer &a ,int b);
};
integer operator+(integer &a,int b)
{
a.a = a.a + b;
return a;
}
int main()
{
integer obj;
integer obj2;
obj+2; //Line 1. this works.
を検討します
これが動作している間
obj2 = obj+2;
obj2+3;
は '(OBJ + 2)は'一時的に返します。一時的なものは非const参照にバインドできません。 –
一歩を踏み出すと、演算子の名前は '+'ですが、 '+ ='のようになります。これは涙で終わります。 –
演算子+をconst整数&aにして参照を変更しないで、新しい整数を変更するだけで、この作業が必要になります。また、@IgorTandetnikは何を言っていたのでしょうか。 – xaxxon