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

Error: No match for 'operator>>' Overloading istream operator

本文关键字:gt 运算符 istream 重载 错误 不匹配      更新时间:2023-10-16

现在学习C ,并遇到了一些问题。在尝试完成一个示例并确保其有效的同时,会遇到错误:

错误:"操作员>>"没有匹配(操作数类型是'std :: istream'和'const int'(参数1的conversion依将不形成

这是我的代码

#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 Operator>>。

的问题。

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

>>操作员超载中删除const

您的Distanceconst'D。

[已解决]

弄清楚了这个问题是

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

无法解释实际过程,为什么这是冲突,但也许其他人可以解释?我真的很想深入了解。谢谢!