Как вызвать перегруженную оператором функцию из других функций / методов в c ++? - PullRequest
0 голосов
/ 06 октября 2019

У меня есть другой объект класса в моем классе. Пример:

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&);
...