2011-01-11 56 views
0

我有一个实体基类,其中类Player和Enemy继承。既当运动员又敌人包含一个精灵对象(从SFML API),它看起来像这样:C++从矢量中的类返回精灵对象

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*)this)->EntityManager::entityVector.std::vector<_Tp, _Alloc>::operator[] with _Tp = Entity*, _Alloc = std::allocator’, which is of non-class type ‘Entity*’

会员“精灵”要求我如何通过精灵对象从这些类的载体内碰撞功能?

回答

1

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

+0

这使它工作,欢呼! – Tev2 2011-01-11 04:46:27