下面的代码解释了这个问题。填写 same_sub_class 以检测两个指向虚拟基类 A 的指针是否实际上是同一个具体类。
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 对实例进行分组。
供参考。我有一个迷你符号代数系统,所以要进行操作,有时了解类类型对于排序和重新排列表达式很重要。
因此,给定一个指向实例的指针向量,如何按它们的 type_id 对它们进行分组。我要么需要能够散列 type_id 要么为每个类生成一个唯一的整数。