私は2つのクラスA(ベース)とB(から派生)を持っていますA:
class A { };
class B : public A
{
int data;
public:
int get_data() { return data; }
};
これで、基本クラスのポインターを取り、派生クラスの関数を呼び出す関数テストがあります。
void test(A * ptr)
{
ptr->get_data();
}
しかし、問題はのオブジェクトまたは のオブジェクトptrを指している可能性があります。のオブジェクトを指している場合は問題ありませんが、 のオブジェクトを指している場合は問題です。ABBA
また、 はのオブジェクトのプロパティではないget_data()ため、仮想化したくありません。dataA
のオブジェクトptrを指しているかどうかを確認するにはどうすればよいですか? B私が考えることができる1つの解決策はdynamic_cast、NULL. それは最善の解決策ですか、それともより良い解決策がありますか?