Член производного класса с тем же именем, что и член базового класса, скрывает прямое использование от члена базового класса - C ++ Primer (5-е издание), Pg 618
Перегрузка функций на основе списка параметров невозможна между производными и базовыми классами. Если вы делаете вызов, например this->setTime(QTime(hours,min));
, где this
- это QTimeEditAdapter
, только ваш новый QTimeEditAdapter::setTime(time_t)
будет учитываться в разрешении перегрузки. Это вызывает ошибку компиляции.
Чтобы обойти это, вы можете напрямую ссылаться на базовый класс в конструкторе:
QTimeEditAdapter::setTime(QTime(hours,min));
, но это не поможет другим пользователям вашего адаптера получить доступ к original setTime
.
Другой обходной путь - вместо этого добавить следующее:
void setTime(QTime qt)
{
QTimeEdit::setTime(qt);
}
Это устраняет проблему, но теперь вы несете ответственность за перечисление всех (настоящих или будущих) возможных перегрузок. который определяет базовый класс.
Чтобы избежать этих хитрых проблем, вероятно, лучше просто выбрать другое имя метода для QTimeEditAdapter::setTime(time_t)
метода.