Краткий ответ: Вы не можете.Потому что ваш компилятор не знает, что такое pb
.это может быть типа A
.Однако вы используете dynamic_cast
, который возвращает указатель B
или NULL
, если это невозможно.
A *pa = new B();
B *pb = dynamic_cast<B*>(pa);
if (pb) {
pb->data = 10;
}
else {
...
}
В любом случае, если вам нужно это сделать, это, вероятно, означает, что вам следует пересмотретьваш дизайн как апскейтинг не очень хорошая идея.Иногда, однако, вы просто не можете избежать этого.Например, при использовании внешних библиотек и т. П.