Bonsoir à tous,

Dans le cadre d'un projet utilisant la bibliothèque SFML, j'utilise plusieurs classes ; ces classes doivent pouvoir interagir avec un seul et unique objet de type "sf::RenderWindow" qui définit la fenêtre de base.

Pour cela, je déclarais et initialisais cet objet dans ma classe principale (la classe main) et envoyait un pointeur vers cet objet aux autres classes. On m'a alors conseillé d'utiliser les smarts pointers afin d'éviter toute fuite de mémoire.

C'est ce que j'ai fais, et ça semble fonctioner... Sauf qu'à la fermeture de la fenêtre (en mode debug), j'ai une erreur qui me renvoie vers une ligne du fichier 'dbgheap.c' signalant ceci : "/*
* If this ASSERT fails, a bad pointer has been passed in. It may be
* totally bogus, or it may have been allocated from another heap.
* The pointer MUST come from the 'local' heap.
*/"

J'imagine que je m'y prends mal, mais alors pourriez-vous m'exliquer comment faire pour récupérer dans un auto_ptr (non déclaré) un pointeur vers un objet présent dans une autre classe ?

Voici ce que j'ai fais dans la classe attendant l'objet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
void Graphics::setApp(sf::RenderWindow *pApp) {
	m_pApp.reset(pApp);
}
m_pApp est mon auto_ptr déclaré comme suite dans les attributs de ma classe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::auto_ptr<sf::RenderWindow> m_pApp;
Enfin, la fonction setApp est appelée comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
m_graphics.setApp(&m_app);
m_graphics étant une instanciation de la classe Graphics

Merci d'avance de vos lumières.