Предположим, что мне предоставлена библиотека С++, полная наследования. Мне предоставляется функция Base* в функции, когда я знаю, что она фактически указывает на объект Derived и Derived наследует Base. Но я не знаю, какое это наследство (public/protected/private). Я также не знаю, есть ли виртуальная функция в иерархии.
Учитывая эту ситуацию, , не глядя на исходный код/документацию из Base и Derived, какой листинг следует использовать? Или я должен сначала проконсультироваться с кодом/документацией, чтобы убедиться в полиморфизме?
Фон
Я пишу changeEvent функцию QMainWindow в Qt 4.7. Функция changeEvent принимает QEvent*, которую я могу передать другому типу, зная QEvent::type(). Мне было интересно, следует ли использовать static_cast или dynamic_cast.
Спасибо.