1

我有一个实体基类,其中类 Player 和 Enemy 继承。玩家和敌人都包含一个精灵对象(来自 SFML api),如下所示:

class Player : Entity
{
   sf::Sprite sprite
}

Player 和 Enemy 是在一个向量中创建的,该向量的设置如下:

class EntityManager
{
   public:
   void CollisionCheck();
   private:
   std::vector<Entity*> entityVector;
}

我正在寻找使用这种形式的碰撞检测功能:

bool Collision::CircleTest(const sf::Sprite& Object1, const sf::Sprite& Object2)

所以我正在尝试做这样的事情:

void EntityManager::ColCheck()
{
   if (Collision::CircleTest(entityVector[0].sprite, entityVector[1].sprite))
      {
         cout << "COLLISION\n";
      }
}

但我得到这个编译错误:

错误:请求成员“精灵”

'((EntityManager*)this)->EntityManager::entityVector.std::vector<_Tp, _Alloc>::operator[] with _Tp = Entity*, _Alloc = std::allocator',属于非类类型'实体*'</p>

如何将向量内这些类的精灵对象传递给碰撞函数?

4

1 回答 1

1

由于entityVector持有Entity*,您需要使用正确的语法:entityVector[0]->sprite而不是entityVector[0].sprite.

于 2011-01-11T04:40:53.240 回答