私はOGREを使用していますが、私はORGEにあまり特有ではない問題にぶつかりましたが、私が扱っているgenreal C++の問題です。 ORGEは質問の文脈に役立ちます。このようオブジェクトの型だけを取得する
OGRE_DELETE_T(obj, ExternalClass);
ようなものであるマクロが
があるしかし、削除が呼び出されるようにするために、私は2番目のパラメータとしてクラスの型で渡す必要があります。しかし、私はちょうどA
ポインタのstd::vector
を保存した場合、私は等をベースclass A
、その後class B
、class C
、class D
を持っ例えば言うが、実際に私がB
、C
、またはA
の一部deriviativeとしてそれらをインスタンス化していることどのようにしてこのマクロに構築された実際のクラスの型を渡すことができますか?私はそれを削除するために行くときにどのような型のオブジェクトが派生しているかわからない、私が知っているすべてはclass A
ポインタです。
私はおそらくdynamic_cast
を使用していると思っていましたが、私は実行時のパフォーマンスが気に入らず、検査するタイプのルックアップテーブルを用意する必要がありました。
は申し訳ありませんが、私は私が思うより特定されている必要があります。私は派生したオブジェクトのタイプが何であるか分かりません。私が知っているのは、それが 'クラスA 'なので、' B'、 'C'なのか分かりません。 – jack