私は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
を指している可能性があります。のオブジェクトを指している場合は問題ありませんが、 のオブジェクトを指している場合は問題です。A
B
B
A
また、 はのオブジェクトのプロパティではないget_data()
ため、仮想化したくありません。data
A
のオブジェクトptr
を指しているかどうかを確認するにはどうすればよいですか? B
私が考えることができる1つの解決策はdynamic_cast
、NULL
. それは最善の解決策ですか、それともより良い解決策がありますか?