我有一個實體基類,其中的類Player和Enemy Inherit。來自Vector的派生類中的訪問對象
class Entity
{
public:
virtual void Update(sf::RenderWindow &window) {};
virtual void Draw(sf::RenderWindow &window) {};
};
既當運動員又敵人包含一個精靈對象,看起來像這樣:
class Player : Entity
{
public:
sf::Sprite sprite
void Update(sf::RenderWindow &window);
void Draw(sf::RenderWindow &window)
}
玩家和敵人都被設置了這樣的載體內創建:
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";
}
}
這將導致以下編譯錯誤:
「實體類」沒有名爲「精靈」
我」成員我不確定如何在實體中創建一個虛擬精靈,以便我可以使用上述方法訪問玩家和敵人精靈。這可能嗎?
我很難過,非常感謝任何人都可以提供的幫助!
感謝您的回覆!如果我在Entity中聲明瞭'Sf :: Sprite sprite',那麼代碼將會被編譯,但是它似乎不會影響我嘗試訪問的向量中的對象的精靈。所以像'entityVector [0] - > sprite.move(1.0)'這樣的東西實際上並不會影響這個精靈。 – Te1 2011-01-11 06:16:31