我正在尝试使流插入运算符过载。在我的头文件中,我有以下内容:
friend ostream& operator<<(ostream, Vector);
在我的实现文件中,我有:
friend ostream& operator<<(ostream& outputStream, Vector& displayMe) {
outputStream << "<" << displayMe.GetVX << "," << displayMe.GetVY << ">";
return outputStream;
}
我收到一条错误消息:
“类声明外的无效说明符”
错误指向我的实现文件中以朋友ostream&开头的行。
很明显,我是运算符重载的新手。我应该在课外定义这个吗?我只是对为什么会收到此错误以及如何修复代码感到困惑。任何建议都会有所帮助。
您需要在ostream<<
类中声明Vector
运算符:
class Vector
{
// ...
friend ostream& operator<<(ostream&, Vector&);
};
还请注意,您也需要在签名中使用引用。
您在执行运算符时未指定friend
。
此外,建议在此处通过const-reference来获取Vector
:
ostream& operator<<(ostream&, Vector const&);