В C ++ проверьте, действительно ли два экземпляра базового класса принадлежат одному и тому же подклассу

Приведенный ниже код объясняет проблему. Заполните 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, либо генерировать уникальное целое число для каждого класса.

9
задан bradgonesurfing 5 October 2010 в 12:50
поделиться