Приведенный ниже код объясняет проблему. Заполните same_sub_class, чтобы определить, два указателя на виртуальный базовый класс A на самом деле являются одним и тем же конкретным class.
struct A {
...
}:
struct B : public A {
...
}:
struct C : public A {
...
}
bool same_sub_class(A * a1, A * a2){
// Fill this in to return true if a1 and a2 are
// of the same concrete class
}
РЕДАКТИРОВАТЬ:
Когда я смотрю на свое приложение, мне нужно что-то немного отличное от приведенного выше. Мне нужно иметь возможность группировать экземпляры по их type_id.
FYI. У меня есть мини-система символьной алгебры, поэтому для выполнения манипуляций важно иногда знать тип класса для сортировки и переупорядочивания выражений.
Итак, учитывая вектор указателей, чтобы показать, как сгруппировать их по их type_id. Мне нужно было либо хешировать type_id, либо генерировать уникальное целое число для каждого класса.