重载流插入运算符

Overloading the stream insertion operator

我正在尝试为赋值重载流插入运算符。在我的头文件中,我有以下内容:

friend ostream& operator<<(ostream, Vector);

在我的实现文件中,我有:

friend ostream& operator<<(ostream& outputStream, Vector& displayMe) {
    outputStream << "<" << displayMe.GetVX << "," << displayMe.GetVY << ">";
    return outputStream;
}

我收到一条错误消息:

"invalid specifier outside a class declaration"

错误指向我的实现文件中以 friend ostream& 开头的行。

我显然是运算符重载的新手。我应该在 class 之外定义它吗?我只是对为什么会收到此错误以及如何修复代码感到困惑。任何建议都会有所帮助。

您需要在 Vector class:

中声明 ostream<< 运算符
class Vector
{
  // ...
  friend ostream& operator<<(ostream&, Vector&);
};

另请注意,您还需要在签名中使用引用。

您没有在运算符的实现中指定 friend

此外,建议在此处通过 const-reference 获取 Vector

ostream& operator<<(ostream&, Vector const&);