Вам нужно уменьшить указатель на дочерний класс, чтобы использовать в нем дочерние функции.
Когда вы обращаетесь к дочернему объекту с помощью parent*
, вы фактически говорите компилятору: «трактуйте этот объект как parent
». Поскольку function_blah()
существует только для дочернего элемента, компилятор не знает, что делать.
Вы можете улучшить это путем понижения с помощью оператора dynamic_cast
:
child* c = dynamic_cast<child*>(A[6]);
c->function_blah();
Будет выполнено проверенное во время выполнения приведение типа к типу с безопасного состояния с parent*
на child*
, где вы можете вызвать function_blah()
.
Это решение работает, только если вы знаете , что объект, который вы вытаскиваете, определенно является child
, а не parent
. Если есть неопределенность, вам нужно вместо этого использовать наследование и создать виртуальный метод для родительского элемента, который затем перегрузить для дочернего элемента.