我必须超载:
ostream& operator<<();
这必须以方法的形式实现,所以我不能以朋友的身份来实现。怎么做?
答案 0 :(得分:1)
如果您将此运算符编写为成员函数,则它只会混淆用户,因为运算符的左操作数将是类类型的对象而不是std :: ostream。 所以你可以编写自己的成员函数而不是运算符。例如
class YourClass
{
public:
std::ostream & out( std::ostream &os ) const
{
// some output
return os;
}
//...
};
您还可以在运算符的定义中使用此函数作为类的非成员函数。例如
std::ostream & operator <<( std::ostream &os, const YourClass &obj )
{
return obj.out( os );
}