我希望有一个非类成员重载的put运算符,它使用引用参数从car对象输出信息。
这是我的代码:
ostream& operator<<(ostream& os, Car& p)
{
os << "For a car make " << p.get_make() << ", " << p.get_year()<< ", the price is $" << p.get_price() << endl;
return os;
}
我收到std::ostream& Car::operator<<(std::ostream&, Car&)' must take exactly one argument
错误
我不允许将汽车作为参数吗?
感谢。
答案 0 :(得分:3)
您说您想要定义非成员运算符。然而,您将运算符定义放在类定义中,这使得编译器将其视为成员(此运算符的成员实现必须只有一个参数,因此出现错误消息)。如果要定义非成员运算符,请将其移出类定义之外或将其声明为friend
(或两者)