>> Как правильно сравнить class Poly_Derived == typeid(*ppolybase) ?
>> Т.е. Является ли указатель *ppolybase классом Poly_Derived?
>> Во всех примерах в гугле(и примере выше) создают для этого объект polyderived,
>> но мне он не нужен, зачем эти накладные расходы? Напрямую можно
>> ли сравнить?
> dynamic_cast?спасибо. подходит, но не совсем. Может еще варианты?
не организовать удобное ветвление программы, если у базового класса например 5 классов-наследников:
if ( *ppolybase == Class Poly_Derived)
{
// делаем 1
}
else if ( *ppolybase == Class Poly_DerivedTwo)
{
// делаем 2
}
на вскидку, с dynamic_cast прийдется создать 5 лишних указателей, и сделать до 5 попыток dynamic_cast, чтобы понять какой это класс. 5 лишних указателей, конечно, лучше чем создание 5 лишних объектов, но не элегантно как-то...
есть какие-то еще возможности?