我正在使用 OGRE,我遇到了一个问题,这个问题不是 ORGE 特有的,而是我正在处理的一个普通的 C++ 问题。 ORGE 只是帮助解决问题的上下文。
有一个宏是这样的
OGRE_DELETE_T(obj, ExternalClass);
但是,为了调用 delete,我需要传入类的类型作为第二个参数。但是,例如我有一个基础 class A
,然后是 class B
、class C
、class D
,等等。如果我要存储一个只有 A
指针的 std::vector
,但实际上我可能已经将它们实例化为 B
,C
或 A
的某些派生词,我如何将构造的实际类的类型传递到此宏中?当我去删除它时,我不知道派生对象是什么类型,我只知道有 class A
指针。
我想也许可以使用 dynamic_cast
,但是,我不喜欢运行时性能,而且我还需要某种类型的查找表来进行检查。
最佳答案
只需在宏中传递派生对象的类型即可。如果您的基有一个 virtual
析构函数,它将正确删除您的指针。
关于c++ - 仅检索对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266635/