упрощенного пример моей проблемы:Проверьте тип происходит от данного родительского типа
У меня есть абстрактный класс A
. У меня есть два абстрактных класса B
и C
наследующий от A
. И у меня есть много выпускных классов наследуя от B
или C
:
class A;
class B : public A;
class C : public A;
class B1 : public B;
class B2 : public B;
class C1 : public C;
class C2 : public C;
Я реализовать алгоритм ПОЛУЧАТЬ указатель на A
того, чтобы знать, если тип приходит из B
или C
работать правильно:
void algorithm(boost::shared_ptr<const A> a)
{
if(*a is a B instance)
// do something
else if(*a is a C instance)
// do something other
}
Как я могу проверить это просто без C++ 11?
Я знаю, как проверить окончательный вид с typeid(*a) == typeid(C1)
, но я не знаю, как проверить родительский тип ...
возможно см. [Здесь] (http://stackoverflow.com/questions/2910979/how-does-is-base-of-work) –