重载流插入运算符
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&);
我正在尝试为赋值重载流插入运算符。在我的头文件中,我有以下内容:
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&);