1
class Base{...};
class Sub1 : public Base{...};
class Sub2 : public Base{...};
Sub1 s1;
Sub2 s2;
bool is_same_base(void *obj1, void *obj2){
...
}
if(is_same_base(s1,s2){
printf("Great! S1 and S2 and from same base class!\n");
}
在这种情况下,我不知道什么是知道如果OBJ1和OBJ2派生相同的基类的最佳/快呢?
一种可能的最慢的,但方法是比较虚拟表项一个接一个,如果有的话函数指针存在于这两个虚拟表,那么我可以说它们是从相同的基类派生的。这不是有效的。
有何评论?
如果你知道你正在比较哪个基类,你可以使用'dynamic_cast'来解决这个问题 – 2012-04-19 20:46:37
你是否必须使用签名'bool is_same_base(void * obj1,void * obj2)'? – GManNickG 2012-04-19 20:46:49
必要的运行时间还是编译时间? – pmr 2012-04-19 20:47:51