Ответы Mail.ru: Как проверить указывает ли указатель на тип его наследника? C++

Для проверки, указывает ли указатель на тип его наследника в C++, можно воспользоваться оператором dynamic_cast. В вашем случае, где есть класс Unit и его наследник Human, вы можете проверить, указывает ли указатель на Human среди объектов типа Unit в векторе vec следующим образом:

 for (Unit* unit : vec) { 
    if (Human* human = dynamic_cast(unit)) { 
        // Этот указатель указывает на объект типа Human 
        // Можно выполнять соответствующие действия здесь 
    } else { 
        // Этот указатель указывает на другой тип объекта 
    } 
} 

Оператор dynamic_cast позволяет проверить, является ли указатель указателем на конкретный тип или его наследника. В данном случае, если указатель unit указывает на объект типа Human, то dynamic_cast вернет указатель на Human, и условие if будет выполнено. В противном случае, если указатель указывает на другой тип объекта, условие else будет выполнено.