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

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

现在学习 C++ 运行 有点问题。在尝试完成示例并确保其正常工作时 运行 出现错误:

错误:'operator>>' 不匹配(操作运行d 类型是 '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 提供给变量,这似乎不正确。不确定我的代码有什么问题,有人可以帮忙吗?

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

你的 Distance 已经 const 了。

[已解决]

发现这里的问题是

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

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