IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Erreur un peu bizarre


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de trecks
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 91
    Par défaut Erreur un peu bizarre
    Bonjour à tous

    Puiqu'un bout de code vaut mieux qu'une explication^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CSpriteManager::~CSpriteManager()
    {
        for(m_SpriteIter = m_vSprite.begin(); m_SpriteIter != m_vSprite.end(); ++m_SpriteIter)
        {
            delete (*m_SpriteIter);
            m_vSprite.erase(m_SpriteIter);
        }
    	m_vSprite.clear();
    }
    Quand je quitte le programme voici le message d'erreur que j'obtiens :
    Debug Assert Failed

    Program : ...
    File c:\program files\développement\microsoft visual studio 8\vc\include\vector
    Line : 117

    Expression "this->_Mycont != NULL", 0)
    ...

    Apparemment il s'agit d'un problème avec mon conteneur vector m_vSprite

    Quand je met en commentaire la ligne m_vSprite.erase(m_SpriteIter) le programme ne plante plus mais pourquoi dont?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    La FAQ a justement une entrée sur le sujet.
    Sinon le 'clear' ne sert à rien, en effet sitôt la fin du destructeur l'objet n'existe plus, ainsi donc que le vecteur qu'il aggrège.

    MAT.

  3. #3
    Membre confirmé Avatar de trecks
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 91
    Par défaut
    Et bien justement, ils disent que s'il s'agit d'un pointeur sur un objet alors il faut supprimer l'objet avec delete, or c'est ce que je fais, puis plus bas dans la FAQ ils disent aussi qu'il faut supprimer l'élément du conteneur vector avec une erase(), mais le problème est la si j'utilise erase() le programme plante

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    La FAQ dit aussi qu'il faut récupérer le retour de erase pour mettre à jour l'itérateur.

    Et note que là tu vas vider 3 fois ton vecteur : une fois avec les erase, une autre avec le clear, et une dernière avec le clear que le destructeur de vector fera automatiquement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CSpriteManager::~CSpriteManager()
    {
        for(m_SpriteIter = m_vSprite.begin(); m_SpriteIter != m_vSprite.end(); ++m_SpriteIter)
        {
            delete (*m_SpriteIter);
        }
    }
    Ceci suffit largement.

  5. #5
    Membre confirmé Avatar de trecks
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 91
    Par défaut
    Ok bas merci ça marche niquel. Dis moi Laurent tu voudrais pas être mon prof?^^^^
    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. premier pas... un peu bizarre
    Par gaia-harastra dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 10/01/2006, 09h00
  2. erreur :Trop peu de paramètres, C'est koi??
    Par nickg dans le forum ASP
    Réponses: 18
    Dernier message: 06/01/2006, 15h59
  3. [CSS] float un peu bizarre sous FF.
    Par elraton dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 10/10/2005, 18h59
  4. Requete sql un pti peu bizarre
    Par lamoufle dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/08/2005, 08h39
  5. erreur trop peu de paramétre. un attendu ??
    Par Amandine62 dans le forum ASP
    Réponses: 3
    Dernier message: 25/01/2005, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo