私はOGREを使用していますが、ORGEにあまり固有ではない問題に遭遇しましたが、これは私が扱っている一般的なC++の問題です。ORGEは、質問のコンテキストを支援するだけです。
次のようなマクロがあります
OGRE_DELETE_T(obj, ExternalClass);
ただし、deleteを呼び出すには、クラスの型を2番目のパラメーターとして渡す必要があります。ただし、たとえば、ベース、class A
次にclass B
、、などがあるとします。ポインタだけを格納する場合でも、実際には、、、またはの派生物としてインスタンス化した可能性があります。どのようにして、のタイプを渡すことができますか。このマクロに組み込まれた実際のクラス?派生オブジェクトを削除しようとしたときに、そのオブジェクトがどのタイプであるかはわかりません。わかっているのは、ポインタがあることだけです。class C
class D
std::vector
A
B
C
A
class A
おそらく使用することを考えdynamic_cast
ましたが、ランタイムパフォーマンスが気に入らなかったため、チェックするタイプのルックアップテーブルも必要になります。