重载类之外的输入和输出流

时间:2018-08-28 16:12:38

标签: c++ class operator-overloading

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

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是正确的,但是我不知道如何解决它,或者为什么它是错误的。我在网上找到的所有解决方案都只是将operator <<和operator >>编写为内联成员函数,但是我想知道为什么我不能在类之外编写定义。

1 个答案:

答案 0 :(得分:0)

您可能会发现以下站点有帮助。如果需要,您可以通过单击Live Demo来试用该代码。 https://www.tutorialspoint.com/cplusplus/input_output_operators_overloading.htm