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 )
无法解释实际过程以及为什么这是冲突,但也许其他人可以解释一下?我真的很想深入了解它。
谢谢!
现在学习 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 )
无法解释实际过程以及为什么这是冲突,但也许其他人可以解释一下?我真的很想深入了解它。 谢谢!