今C++を学習していて、少し問題がありました。エラー: '演算子'に一致しません。istream演算子をオーバーロードしています
エラー: '演算子' 'に一致しません(オペランドの種類は' std :: istream 'と' const int ') 引数の変換を実行しています1ここで
を病気に形成されるだろう
#include <iostream>
#include <sstream>
#include <cstdlib>
using namespace std;
class Distance {
private:
int feet;
int inches;
public:
Distance() {
feet = 0;
inches = 0;
}
Distance(int f, int i) {
feet = f;
inches = i;
}
friend ostream &operator<<(ostream &output, const Distance &D) {
output << D.feet << "\'" << D.inches << "\"" << endl;
return output;
}
friend istream &operator>>(istream &input, const Distance &D) {
input >> D.feet >> D.inches;
return input;
}
};
int main() {
Distance D1(11,10), D2(5,11), D3;
cin >> D3;
cout << "First Distance : " << D1 << endl;
cout << "Second Distance : " << D2 << endl;
cout << "Third Distance : " << D3 << endl;
return 0;
}
ははistreamとostreamの演算子をオーバーロードしようとすると、しかし、のIStream演算子>>の問題に実行している、私のコードです。
変数D.feetとD.inchesをchar *に変換すると最初に考えられましたが、変数にintを入力する必要があると考えているようです。私のコードに何が間違っているのか分かりません。
http://stackoverflow.com/questions/5598703/c-const-usage-explanation – Pbd
'演算子>>'は右辺の引数を変更することになっているので、 'const'はそこでは意味がありません。 – aschepler
Typo、戻り型は 'ostream'ではなく' istream'でなければなりません。 – Anubis