I have an Entity baseclass which the classes Player and Enemy Inherit.
class Entity
{
public:
virtual void Update(sf::RenderWindow &window) {};
virtual void Draw(sf::RenderWindow &window) {};
};
Both player and enemy contain a sprite object that looks like this:
class Player : Entity
{
public:
sf::Sprite sprite
void Update(sf::RenderWindow &window);
void Draw(sf::RenderWindow &window)
}
Player and Enemy are created inside a vector which is set up like this:
class EntityManager
{
public:
void CollisionCheck();
private:
std::vector<Entity*> entityVector;
}
I’m looking to use a collision detection function of this form:
bool Collision::CircleTest(const sf::Sprite& Object1, const sf::Sprite& Object2)
So I’m trying to do something like this:
void EntityManager::ColCheck()
{
if (Collision::CircleTest(entityVector[0]->sprite, entityVector[1]->sprite))
{
cout << "COLLISION\n";
}
}
This results in the following compile error:
‘class Entity’ has no member named ‘sprite’
I’m unsure how to create a dummy sprite in Entity so that I can access the player and enemy sprites using the above method. Is this possible?
I’m stumped and would greatly appreciate any help anyone can offer!
If everything in your code that derives from
Entityhas aspriteobject, then you should declare that object in the base class.Not declaring the object in the base class means that there could be a class inheriting from
Entitythat does not have a sprite object, which means thatColCheckhas no valid basis for assuming that elements ofentityVectorpoint to something that has a variable calledsprite. Make sense?