Я хочу иметь перегруженный оператор put, не являющийся членом класса, который использует параметры ссылки для вывода информации из автомобильного объекта.
Вот мой код:
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
ошибка
Разве мне не разрешено иметь автомобиль в качестве параметра?
Благодарю.
Вы сказали, что хотите определить нечлен оператор. Тем не менее, вы поместили свое определение оператора в определение класса, что заставило компилятор рассматривать его как член (Реализация элемента этого оператора должна иметь только один параметр, отсюда и сообщение об ошибке). Если вы хотите определить оператор, не являющийся членом, либо переместите его за пределы определения класса, либо объявите его как friend
(или оба)
Других решений пока нет …