C ++ Возвращает объект спрайта из класса в векторе - PullRequest
0 голосов
/ 11 января 2011

У меня есть базовый класс Entity, который наследуют классы Player и Enemy.И игрок, и враг содержат спрайтовый объект (из API SFML), который выглядит следующим образом:

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";
      }
}

Но я получаюэта ошибка компиляции:

ошибка: запрос на член 'sprite' в

'((EntityManager *) this) -> EntityManager :: entityVector.std :: vector <_Tp,_Alloc> :: operator [] с _Tp = Entity *, _Alloc = std :: allocator ', который имеет неклассовый тип' Entity * '

Как передать объект спрайта из этихклассы внутри вектора для функции столкновения?

1 Ответ

1 голос
/ 11 января 2011

Поскольку entityVector содержит Entity*, вам нужно использовать правильный синтаксис: entityVector[0]->sprite вместо entityVector[0].sprite.

...