我有一个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对象从向量中的这些类传递给碰撞函数?
答案 0 :(得分:1)
由于entityVector
占有Entity*
,您需要使用正确的语法:entityVector[0]->sprite
而不是entityVector[0].sprite
。