我正在使用 OGRE,但我遇到了一个与 ORGE 无关的问题,而是我正在处理的一个典型的 C++ 问题。ORGE 只是帮助解决问题的上下文。
有一个宏,例如
OGRE_DELETE_T(obj, ExternalClass);
但是,为了调用 delete,我需要传入类的类型作为第二个参数。但是,比如说我有一个 base class A,然后class B, class C,class D等。如果我只存储一个std::vector指针A,但实际上我可能已经将它们实例化为B,C或 的一些衍生物A,我怎么能传递构造到这个宏中的实际类?当我去删除它时,我不知道派生对象是什么类型,我只知道有class A指针。
我想也许使用dynamic_cast,但是我不喜欢运行时性能,我还需要某种类型的查找表来检查。