我有两节课。超类是“组件”类,子类是“变换”类。
我正在使用的框架有一个函数,它返回特定类型的组件列表。但是,该列表会将它们作为组件返回,因为类型不限于特定的子类(但这是我使用它的方式)。
因此,在以下场景中,我知道所有返回的组件都将属于 Transform 子类。我正在做的是遍历列表,然后将每个组件转换为 Transform。这是我的代码:
std::list<Cistron::Component*,std::allocator<Cistron::Component*>> playerTransforms = objectManager->getComponents(player,"Transform");
std::list<Cistron::Component*>::iterator playerComponentIterator = playerTransforms.begin();
for (playerComponentIterator; playerComponentIterator != playerTransforms.end(); playerComponentIterator++)
{
Transform *tmpTransform = static_cast<Transform*> (*playerComponentIterator);
std::cout << tmpTransform->x ;
std::cout << tmpTransform->y ;
}
这效率如何?我对 C++ 很陌生,所以我不知道是否有更好的方法来做到这一点。