Il codice seguente spiega il problema. Compilare same_sub_class per rilevare se i due puntatori alla classe base virtuale A sono in effetti la stessa classe di calcestruzzo .In C++ verificare se due istanze di una classe base sono effettivamente della stessa sottoclasse
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
}
EDIT:
Mentre guardo la mia domanda ho bisogno di qualcosa di leggermente diverso da quanto sopra. Devo essere in grado di raggruppare le istanze in base al loro id_tipo.
FYI. Ho un mini sistema algerbra simbolico, quindi per fare manipolazioni è importante conoscere il tipo di classe a volte per l'ordinamento e la riorganizzazione delle espressioni.
Così dato un vettore di puntatori ad esempio come raggrupparli in base al loro id_tipo. Dovrei essere in grado di eseguire l'hash del tipo id o generare un numero intero univoco per ogni classe.
suona come quello di cui hai veramente bisogno è un int statico su ogni classe da ordinare? –