Bonjour,
Pour faire simple, je ne comprend pas pourquoi je ne peux pas faire ça :
void DrawableObject::draw(sf::RenderTarget& target, sf::RenderStates states) const {
target.draw(*m_sprite, states);
}
où m_sprite est un pointeur vers un Sprite.
Alors que je peux faire ça :
void DrawableObject::draw(sf::RenderTarget& target, sf::RenderStates states) const {
target.draw(m_sprite, states);
}
où m_sprite n'est pas un pointeur mais directement un object Sprite.
-> Une exception apparaît à la ligne du target.draw dans le premier cas.
Pourriez-vous m'expliquer pourquoi ?
Merci d'avance.
Nope quand je fais std::cout << m_sprite ça m'affiche bien une adresse.
Par contre, y'avait un problème au niveau de la texture donc en modifiant un peu l’opérateur d'affectation de mon objet, j'ai réussi à virer l'exception mais le RenderTarget ne me dessine rien.
Et quand dans la fonction draw, je mets un petit
std::cout << m_sprite->getTextureRect().width << std::endl;
Il m'affiche bien la taille de la texture. En gros ça voudrait dire que tous les attributs de la texture sont copiés sauf l'image en fait...
Le problème vient peut-être de l'affectation, je l'ai faite comme ça :
m_sprite = new sf::Sprite(*other.m_sprite->getTexture());