2017-04-23 1 views
1

今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を入力する必要があると考えているようです。私のコードに何が間違っているのか分かりません。

答えて

0

const>>演算子のオーバーロードで削除します。

Distanceconstです。

1

この問題を考え出し

ostream &operator>>(istream &input , const Distance &D) 

の「CONST」は、実際のプロセスを説明することはできません、なぜこれが競合しているが、おそらく他の誰かができたということであった[SOLVED]説明してください?私は本当にそれを深く知りたいです。 ありがとう!

+0

http://stackoverflow.com/questions/5598703/c-const-usage-explanation – Pbd

+0

'演算子>>'は右辺の引数を変更することになっているので、 'const'はそこでは意味がありません。 – aschepler

+0

Typo、戻り型は 'ostream'ではなく' istream'でなければなりません。 – Anubis

関連する問題