Bonjour.

Depuis une discutions sur les pointeurs, j'ai suivis les conseils donnés et me suis résolu a utiliser des pointeurs intelligents, a savoir, ici, boost::shared_ptr.
J'ai un petit soucis, et je pense que cela vient justement de pointeurs de ce type.

J'ai un vector d'objet, dont chaque objet contient 2 boost::shared_ptr d'autres objets, qui servent a recevoir/envoyer leur coordonnées pour l'affichage et pour les collision. Tout fonctionne très bien, jusqu'au moment ou je décide de supprimer l'un de ces objets ainsi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
    for(vector<Objet>::iterator it = m_objet.begin() ; it != m_objet.end() ; it++)
    {
        it->rafraichi();
        if(!it->renvoiVie())
        {
           m_objet.erase(it);
           it = m_objet.begin() ;
        }
    }
il plante alors et me dit ceci en console : " pure virtual method called // terminate called without an active exception "

Une question me vient donc, quand aux boost::shared_ptr:

Si on envoi un boost::shared_ptr<Objet> a un autre objet, faut-il lui indiquer si l'objet est détruit (donc la référence), si en l'occurence, cela peut être la source du plantage, et si c'est le cas, comment le faire?

Merci si vous pouvez m'aider