立即学习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输入变量,这似乎并不正确。不确定我的代码有什么问题,有人可以帮忙吗?
答案 0 :(得分:1)
删除const
运算符重载中的>>
。
Distance
为const
'd。
答案 1 :(得分:1)
[解决]
弄清楚这个问题是
中的'const'ostream &operator>>( istream &input , const Distance &D )
无法解释实际流程以及为何会出现冲突,但也许其他人可以解释一下?我真的很想深入了解它。 谢谢!