次のコードが壊れています。コード内の特定の行を修正することで修正できます(コメント参照)。問題の原因は何ですか?演算子の戻り値++
#include <iostream>
using namespace std;
class Number{
public:
int n;
Number(int a):n(a){}
//when I change the following to
//friend Number& operator++(Number& source, int i)
//then it compiles fine and correct value is printed
friend Number operator++(Number& source, int i){
++source.n;
return source;
}
};
int main() {
Number x(5);
x++++; //error: no 'operator++(int)' declared for postfix '++' [-fpermissive]
cout<<x.n;
return 0;
}
なぜこれはあなたを驚かせるのですか?後置される 'operator ++'の意味、あなたが何を返そうとしているのか、あなたが何をしようとしているのか、誰にやっているのかを考えてみましょう。 –
なぜあなたのコードに 'friend'が必要ですか? – triclosan
@triclosanここでは必要ないが、彼はプライベートメンバーを持っていて、メンバーの過負荷とは対照的なグローバルな機能を望んでいると仮定していますか? –