如何解决如何在不同的派生类中多态调用函数重载?
我正在构建一个 2D 平台游戏,游戏中的每个实体都继承自 Entity
类。我有一个 std::vector<std::unique_ptr<Entity>> entities
来动态分配这些实体。我还想从驱动程序代码中多态地检查碰撞:
for(int i = 0; i < entities.size();i++){
for(int j = 0; j < entities.size();j++)
entities[i]->checkCollision(*j);
}
派生类型包括Player
、Enemy
、Tile
等。不同派生类型之间的冲突处理方式不同,这就是我想使用多态的原因。到目前为止我的方法:
struct Entity{
virtual void checkCollision(Entity&e){};
};
struct Player : public Entity{
void checkCollision(Tile &t) override { //collision with tile};
void checkCollision(Enemey &e) override {//enemy colliion};
};
然而,虚拟函数没有被覆盖,并且代码无法编译。是否有一种明智的方法来实现这一点,或者我的多态方法在根本上存在缺陷?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。