在类外部重载输入和输出流

Overloading input and output streams outside of the class

本文关键字:输出流 输入 重载 外部      更新时间:2023-10-16

我正在尝试重载类中的输入和输出流。在头文件中,我声明了成员函数:

class MyClass
{
private:
friend ostream &operator <<(ostream &, const MyClass &);
friend istream &operator >>(istream &, MyClass &);
};

然后在.cpp文件中,我尝试定义函数。我写它们的方式是这样的:

ostream& MyClass::operator<<(ostream &strm, const MyClass &obj)
{
//...
}
istream& MyClass:operator>>(istream &strm, MyClass &obj)
{
//...
}

问题是,在我定义成员函数的.cpp文件中,Visual Studio 告诉我函数标头不正确。我确信Visual Studio是对的,但我不知道如何修复它,或者为什么它是错误的。我在网上找到的所有解决方案都只是将运算符<<和运算符>>编写为内联成员函数,但我想知道为什么我不能在类之外编写定义。

您可能会发现以下网站很有帮助。如果需要,您可以通过单击实时演示来使用代码。https://www.tutorialspoint.com/cplusplus/input_output_operators_overloading.htm