dynamic_cast vs expondo funções virtuais na classe pai (C ++)

Eu tenho uma classe pai "base" e outra classe "derivada" que herda de "base".

"derivado" tem 1 método cH1.

se eu fizer isso:

base* b = new derived();

E eu quero poder fazer isso:

b->cH1();

Obviamente não posso e existem 2 soluções:

Seja declarar cH1 como virtual puro na base.

ou faça isso:

dynamic_cast<derived*>(b)->cH1();

Qual deles é uma prática melhor?

questionAnswers(3)

yourAnswerToTheQuestion