重载流插入运算符

问题描述 投票:0回答:1

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

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

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

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

我收到一条错误消息:

“类声明外的无效说明符”

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

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

c++ operator-overloading operator-keyword cout
1个回答
0
投票

您需要在ostream<<类中声明Vector运算符:

class Vector
{
  // ...
  friend ostream& operator<<(ostream&, Vector&);
};

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

您在执行运算符时未指定friend

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

ostream& operator<<(ostream&, Vector const&);
© www.soinside.com 2019 - 2024. All rights reserved.