Bonjour à toutes et à tous.
Je suis face à un soucis d'héritage avec la SFML 2.1.
Ci-dessous un schéma représentant ce que je voudrais mettre en place :
class AGraphObject : public sf::Drawable
|
|
class GWall : public AGraphObject, public sf::RectangleShape
Selon la doc de sf::Drawable (
http://www.sfml-dev.org/documentation/2.1/classsf_1_1Drawable.php), je dois définir la fonction " virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const" dans la classe AGraphObject.
Or le tutoriel utilise un sf::Sprite (membre de la classe AGraphObject). Dans mon cas, il n'y a pas de sf::Sprite car l'objet qui doit être affiché est de type GWall.
J'ai donc pensé à faire ceci dans les .hpp :
class AGraphObject : public sf::Drawable
{
public:
AGraphObject(AObject *parent);
virtual ~AGraphObject(void);
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const = 0;
}
class GWall : public sf::RectangleShape, public AGraphObject
{
public:
GWall(AObject *parent);
~GWall(void);
virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const;
};
Et dans le GWall.cpp
// -------------------------------------------------------------------------
void GWall::draw(sf::RenderTarget& target,
sf::RenderStates states) const
{
target.draw(*this, states);
}
Or à la compilation j'ai une erreur de type (avec clang++) :
client/GraphicalEngine/src/GWall.cpp:46:15: error: ambiguous conversion from derived class 'const GWall' to base class 'const sf::Drawable':
class GWall -> sf::RectangleShape -> class sf::Shape -> class sf::Drawable
class GWall -> class AGraphObject -> sf::Drawable
target.draw(*this, states);
^~~~~
Quelqu'un pourrait-il m'aiguiller ?
Merci d'avoir pris le temps de lire mon post !
Cordialement.