C++ 运算符重载错误

C++ 运算符重载错误,c++,operator-overloading,C++,Operator Overloading,我有两种不同的运算符重载。出于某种原因,它给出了错误。 如果我删除其中一个,则不会显示任何错误。我可以知道为什么吗 我能把两者结合起来吗 这用于在屏幕上打印 ostream& operator<<(ostream &out, const Point &p) { return out << "[" << setw(4) << p.getX() << setw(1) << "," << set

我有两种不同的运算符重载。出于某种原因,它给出了错误。 如果我删除其中一个,则不会显示任何错误。我可以知道为什么吗

我能把两者结合起来吗

这用于在屏幕上打印

ostream& operator<<(ostream &out, const Point &p) {
return out << "[" << setw(4) << p.getX() << setw(1) << "," << setw(4) << p.getY() << "]   " << setprecision(3) << p.getScalarValue() << endl;
}

ostream&operator您不需要第二个版本。您可以使用第一个:

Point p;
std::ofstream pointsFile("points.txt");
pointsFile << p << "\n";
p点;
std::流点文件(“points.txt”);

pointsFile您不需要第二个版本。您可以使用第一个:

Point p;
std::ofstream pointsFile("points.txt");
pointsFile << p << "\n";
p点;
std::流点文件(“points.txt”);

在第二个定义中,您编写了流的
文件,而不是
ostream
。您是在尝试编写流的
版本、点2D
版本,还是两者兼而有之?如果您提供一个最小、完整的示例程序来回答问题,您会更快地得到更好的答案。有关更多信息,请参阅。@juanchopanza我需要重载,而您在第二个定义中编写了流的
而不是
ostream
。您是在尝试编写流的
版本、点2D
版本,还是两者兼而有之?如果提供最小的,用您的问题完成示例程序。有关详细信息,请参阅。@juanchopanza我需要重载,第二个参数不是同一类型。@Fake.It.Til.U.Make.It我无法准确理解OP的要求。@juanchopanza所以我不需要单独声明?@user1571494,您只需要
ostream
版本。第二个参数的类型不同。@Fake.It.Til.U.Make.It我无法准确理解OP的要求。@juanchopanza所以我不需要单独声明?@user1571494准确地说,您只需要
ostream
版本。