マイナス( - )、インクリメント(++)などを使用して単項演算子のオーバーロードについて読んでいました。私は練習用に同じコードを書こうと思ったんだけど、実行しようとするとマイナスとインクリメント演算子の両方にエラーが出る。問題は私がmain.Canの演算子を呼び出す方法だと思うこれを行う正しい方法は何ですか?C++での単項演算子のオーバーロードが難しいですか?
#include<iostream>
using namespace std;
class c{
int x;
int y;
public:
c(int a,int b){
x=a;
y=b;
}
void operator -(){
x=x+1;
y=y+1;
}
void display(){
cout<<x<<" "<<y<<"\n";
}
};
int main()
{
c obj(2,3);
obj.display();
obj- ; //I think the error is on this line
obj.display();
return 0;
}
obj-を-objに置き換えた場合、コードは正常に動作します。なぜそうですか? + +演算子のオーバーロードで問題があります(++ objはうまく動作しますがobj ++は動作しません)、なぜですか?
ありがとうございました。
オーバーロードされた演算子は値を返す必要があります。 @stashoverflow.com/questions/4421706/operator-overloadingを参照してください。 –
@ThomasMatthews - 過負荷の演算子に値を返すことを要求する言語ではなく、* convention *です。オーバーロードされた演算子が 'void'を返すことは完全に可能であり、許容されます。そうすることは合法であり、オペレータの特定の用途を排除する。 –