错误:不匹配'运算符>>'重载istream运算符

时间:2017-04-23 03:50:42

标签: c++ operator-overloading overloading istream

立即学习C ++并遇到了一些问题。在尝试完成示例并确保其工作时遇到错误:

错误:不匹配'运算符>>' (操作数类型是' 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运算符&gt;&gt;。

首先想到将变量D.feet和D.inches转换为char *,但考虑到我必须将int输入变量,这似乎并不正确。不确定我的代码有什么问题,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

删除const运算符重载中的>>

Distanceconst'd。

答案 1 :(得分:1)

[解决]

弄清楚这个问题是

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

无法解释实际流程以及为何会出现冲突,但也许其他人可以解释一下?我真的很想深入了解它。 谢谢!