У меня возникла странная проблема, и я уверен, что ее легко исправить. У меня супер класс, назовем его «Птица». Птица имеет виртуальную функцию под названием chirp, которая возвращает мне 0. У меня также есть подкласс, который позволяет называть его ... SomeOtherBird. SomeOtherBird - подкласс Птицы. Функция ЛЧМ() для моего подкласса должен вернуть мне 1.Полиморфизм C++
До сих пор:
Bird.Chirp() должна возвращать 0 SomeOtherBird.Chirp() должен возвращать 1
Некоторые другие птицы является подклассом птицы.
Теперь, предполагая, что я перехожу в Bird в отдельный конструктор, назовем его гнездом.
Итак: гнездо (Bird & х)
, если я прохожу SomeOtherBird, и я называю Chirp, она вызывает виртуальную функцию главного супер-класса, а не подкласса, так, например:
SomeOtherBird x; Гнездо (x); , а затем, если я делаю x.chirp, вызывается основной метод, а не один из подкласса.
Как получить функцию в вызываемом подклассе, а не виртуальную главную функцию?
Благодаря
Кроме того, включают в себя фактический код у вас возникли проблемы с, а не какой-то описание окольным. – Xeo
Dynamic Dispatch должен работать, и он должен возвращать 1, если вы не делаете что-то еще. Опубликовать весь код – Anand