C ++从向量中的类返回sprite对象

时间:2011-01-11 04:30:16

标签: c++ sfml

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

class Player : Entity
{
   sf::Sprite sprite
}

玩家和敌人是在一个矢量中创建的,这个矢量设置如下:

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的*)此) - &GT; EntityManager的:: entityVector.std ::矢量&lt; _TP,   _Alloc&gt; :: operator [] _Tp = Entity *,_ Alloc =   std :: allocator',哪个   是非类型的'Entity *'

如何将sprite对象从向量中的这些类传递给碰撞函数?

1 个答案:

答案 0 :(得分:1)

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