У меня есть другой объект класса в моем классе. Пример:
ParkingMeter.h
class ParkingMeter
{
private:
ParkedCar pCar;
int minutesPurchased = 0;
public:
friend std::istream& operator >> (std::istream, ParkingMeter&);
};
ParkedCar.h
class ParkedCar
{
private:
std::string maker;
std::string model;
std::string color;
int licenseNumber = 0;
int minutesParked = 0;
public:
friend std::istream& operator >> (std::istream&, ParkedCar&);
friend std::ostream& operator << (std::ostream&, ParkedCar&);
};
Итак, когда я вхожуданные для ParkingMeter объекта с соответствующим оператором перегружены, я хочу вызвать перегруженную функцию для объекта ParkedCar .
Это то, что у меня есть. Оператор перегружен функцией ParkingMeter :
std::istream& operator>>(std::istream is, ParkingMeter& obj)
{
cout << "How many minutes to buy? ";
is >> obj.minutesPurchased;
cout << "Enter the information about your car:\n";
is >> obj.pCar;
return is;
}
Но в моем основном файле следующий код не содержит слов:
ParkingMeter temp;
std::cin >> temp;
Спасибо.
Решение
Спасибо @LF за указание на мою глупую ошибку. : D
Я забыл использовать & после std :: istream в аргументах функции:
friend std::istream& operator >> (std::istream, ParkingMeter&);
Сейчасвсе работает нормально:
friend std::istream& operator >> (std::istream&, ParkingMeter&);