我正在尝试用 C++ 制作我自己的 CBGE(基于组件的游戏引擎),但我被困在这个问题上:如何查找对象是否属于特定类?或者等同于指针,如何查找指针是否指向特定类的对象?让我举个例子:
我的代码中有这个:
//ComponentManager.h
...
std::map<rUUID, std::vector<Component*>> bucket;
...
其中 rUUID 是一个表示 UUID 的类,而 Component 是一个抽象类,它 表示一个实体可以拥有的所有类型的组件。
现在如何为给定的 rUUID 获取特定类型的组件(例如 PositionComponent)?
也有人可以告诉我这种设计是好的还是坏的做法,如果是的话如何 应该成立吗?
最佳答案
如果类Foo
有一些虚拟方法,如果你的编译器支持 RTTI你可以检查dynamic_cast<Foo*>(p) != NULL
检查是否p
指向 Foo
的一些实例(假设 p
被声明为指向 Bar *p;
的某个父类(super class) Bar
的指针 Foo
)
通知:dynamic_cast<Foo*>(p) != NULL
将返回 true
如果p
指向 Foo
的某个子类的实例.
另见 <typeinfo>
header和 typeid
(正如另一个答案中的 BlackMamba 所建议的那样)。
关于c++ - 查找对象是否属于C++中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17002037/