Производный класс c ++ обращается к операторам друзей базового класса - PullRequest
1 голос
/ 04 августа 2020

Я работаю с перегрузкой операторов и наследованием. В настоящее время у меня есть что-то похожее на следующий код:

istream& operator >> (istream& in, derived& d)
{
   /* Some code asking for input to populate the object's data members*/
   cin >> d; /*Here, the operator called is this one, creating an infinite loop*/
}

Базовый класс имеет оператор istream >>, и при попытке его вызвать оператор фактически вызывает себя, вызывая al oop. Как мне получить доступ к базовому оператору из производных?

1 Ответ

2 голосов
/ 04 августа 2020

Вам нужно преобразовать его в базовый класс, чтобы вызвать operator>> в базовом классе, иначе он попытается вызвать сам себя и приведет к бесконечной рекурсии. Например,

istream& operator >> (istream& in, derived& d)
{
    in >> static_cast<base&>(d);
    return in;
}

PS: вы должны использовать in вместо фиксированного использования cin и возвращать in в operator>>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...