例えば:
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が同じ基本クラスから派生しているかどうかを知るための最良/高速な方法は何ですか?
考えられるが最も遅い方法の1つは、仮想テーブルエントリを1つずつ比較することです。両方の仮想テーブルに関数ポインタが存在する場合、それらは同じ基本クラスから派生していると言えます。これは効率的ではありません。
任意のコメント?