c++ - 仅检索对象的类型

标签 c++ oop rtti ogre

我正在使用 OGRE,我遇到了一个问题,这个问题不是 ORGE 特有的,而是我正在处理的一个普通的 C++ 问题。 ORGE 只是帮助解决问题的上下文。

有一个宏是这样的

OGRE_DELETE_T(obj, ExternalClass);

但是,为了调用 delete,我需要传入类的类型作为第二个参数。但是,例如我有一个基础 class A,然后是 class Bclass Cclass D,等等。如果我要存储一个只有 A 指针的 std::vector,但实际上我可能已经将它们实例化为 BCA 的某些派生词,我如何将构造的实际类的类型传递到此宏中?当我去删除它时,我不知道派生对象是什么类型,我只知道有 class A 指针。

我想也许可以使用 dynamic_cast,但是,我不喜欢运行时性能,而且我还需要某种类型的查找表来进行检查。

最佳答案

只需在宏中传递派生对象的类型即可。如果您的基有一个 virtual 析构函数,它将正确删除您的指针。

关于c++ - 仅检索对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266635/

相关文章:

c++ - 使用 gcc 4.2 在 Mac OS X 10.6.8 上安装 lxml

c++ - 内存释放和异常

java - Java上的有限状态机设计问题

delphi - 如何使用 RTTI 将事件处理程序分配给事件属性?

c++ - 如何在这里摆脱 dynamic_cast ?

c++ - std::vector 的对齐问题

c++ - 在多台机器上分布状态

java - java中如何访问其他类方法中的变量

javascript - 具有不同函数调用定义的共享 JavaScript 文件

delphi - 你能找到一个使用RTTI的实际应用程序TStringList吗