我编写了一个使用结构的程序,允许用户输入一个点,然后输出该点,但是当我运行该程序时,它给了我错误:main.cpp:19:10:error:不匹配'operator <<'(操作数类型为'std :: ostream {aka std :: basic_ostream}'和'Point') cout <<结果;
这是什么意思?
#include <iostream>
using namespace std;
struct Point {
double x, y;
};
// get a point from user input
Point input_point() {
double x, y;
cin >> x >> y;
Point p = {x, y};
return p;
}
int main() {
Point result;
result = input_point();
cout << result;
}
答案 0 :(得分:4)
您可以像这样重载运算符:
std::ostream& operator<< (std::ostream& stream, const Point& p) {
stream << "[" << p.x << ", " << p.y << "]";
return stream;
}
您的结果将是这样的:
[1, 2]
基本上,重载的函数应该获取流和对象的引用,然后它必须实现逻辑以打印对象(例如,通过打印其成员),然后应再次将引用返回给流。
以下是修改后的程序,显示了在何处插入函数:
#include <iostream>
using namespace std;
struct Point {
double x, y;
};
std::ostream& operator<< (std::ostream& stream, const Point& p) {
stream << "[" << p.x << ", " << p.y << "]";
return stream;
}
// get a point from user input
Point input_point() {
double x, y;
cin >> x >> y;
Point p = { x, y };
return p;
}
int main() {
Point result;
result = input_point();
cout << result;
}