现在学习C++并遇到一些问题。尝试完成一个示例并确保其工作出现错误:错误:'operator >>'无法匹配超载istream运算符
错误:'operator >>'不匹配(操作数类型是'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提供给变量,这看起来不正确。不知道我的代码有什么问题,任何人都可以帮忙吗?
http://stackoverflow.com/questions/5598703/c-const-usage-explanation – Pbd
'operator >>'应该修改它的右边的参数,所以'const'在这里没有意义。 – aschepler
错字,返回类型应该是'istream',而不是'ostream'。 – Anubis