【发布时间】:2022-11-17 09:50:26
【问题描述】:
class Component {
// Code here
};
class TransformComponent : public Component {
// Code here
};
class Entity:
public:
Component components[25];
TransformComponent *getTransform() {
for(int i = 0; i < 25; i++) {
if(typeid(components[i]) == typeid(TransformComponent())) {return *(components + i);}
}
}
};
我有一个组件数组,里面可以是“组件”的任何子类,比如“TransformComponent”。问题是,在编译时,计算机认为组件数组只填充了“组件”对象。该函数应该返回一个“TransformComponent”,并且编译器认为这是一个错误,即使我返回的数组中的元素是一个 TransformComponent。有什么解决办法吗(最好是简单的)?
【问题讨论】:
标签: c++ arrays function loops oop