Почему вы хотите получить доступ к интерфейсу производного класса? Когда вы используете полиморфизм, вам не нужно заботиться о том, что стоит за ссылкой / указателем базового класса. Если да, то это обычно намек на недостаток дизайна.
То, что вы пытаетесь сделать, это "тип включения". («Если позади B*
находится D1
объект, сделайте это, иначе сделайте это».) Тип включения обходит полиморфизм и является плохим признаком.
Примечание: есть способ сделать это (dynamic_cast
), но по причинам, упомянутым выше, я рассматриваю эту плохую практику и не буду останавливаться на ней.