Я относительно новичок в C ++. У нас есть абстрактный базовый класс и 2 производных класса.
class PositionBase (abstract)
class PositionLenght: PositionBase
class PositionAngle: PositionBase
PositionBase содержит такие функции, как получение имени.
Производные классы имеют такие методы, как GetLenght()
или GetAngle();
(Старое) приложение содержит массив, который содержит производные классы.
Предположим, я получаю объект из array[1]
и, основываясь на его типе, я хочу запустить GetLength() or GetAngle()
. Затем мне нужно знать тип объекта, который я получаю из массива.
Когда я использую:
if(PositionBase->IsKindOf(RUNTIME_CLASS(PositionLenght))))
{do something}
это не работает. Что работает
if(typeid(*PositionBase) == typeid(PositionLenght)))
{do something}
Я также могу просто "dynamic_cast
" объект, и если он не возвращает NULL, я в порядке.
В C#
Я бы использовал интерфейсы, какой предпочтительный способ справиться с этим в C++
?