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

SL & STL C++ Discussion :

Pb avec erase


Sujet :

SL & STL C++

  1. #1
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut Pb avec erase
    Bonjour,

    J'ai un pb pour effacer un élément (pointeur) d'un conteneur
    à une position donnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    vector <pObj*> tabObj;
    tabObj.resize(10);
     
     ...
     
    delete tabObj[pos];
    tabObj.erase(tabObj.begin() + pos);
    et voici le message d'erreur:
    no matching function for call to 'std::vector<tabObj*, std::allocator<tabobj*>::erase(__gnu_cxx::normal_iterator(std::string, std::allocator<std::string> > >)'
    Je ne comprend pas bien ce que ça veut dire ni pourquoi je ne peux pas supprimer
    ce pointeur du conteneur comme n'importe quel élement.

    Quelqu'un pourrait-il m'aider ?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Le message d'erreur indique que tu passe à la fonction erase un itéreteur sur des strings, pas un itérateur sur des pObj*. Le code que tu dois essayer de compiler doit être différent de celui que tu nous montre.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut
    Merci pour ta réponse mais comment faire pour passer
    un itérateur sur des pObj* ?
    Faut-il faire un cast ou quelque chose comme ça ?

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Je ne vois pas de problèmes dans le code posté, c'est pourquoi je soupçonne que le vrai code doit être différent. Peut-tu poster un programme complet qui reproduise le problème ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut
    Exact ! Un copié/collé oublié provoquait l'erreur.

    Juste une dernière question:
    Pourquoi l'argument de erase doit être un itérateur et pas simplement un int ?
    Est ce par sécurité ?

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Qu'il y ait un erase prenant un itérateur me semble normal, par homogénéité par rapport aux autres conteneurs qui n'ont pas de fonctions d'indexation.

    Je ne sais pas trop pourquoi il n'y a pas aussi une fonction prenant un index.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. commande erase avec erreur, comment la détecter?
    Par THKKK dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 30/08/2010, 14h57
  2. Problème avec erase d'une map
    Par scary dans le forum Débuter
    Réponses: 8
    Dernier message: 10/08/2010, 17h58
  3. supprimer un élément d'une liste avec erase
    Par jane40 dans le forum Débuter
    Réponses: 12
    Dernier message: 24/01/2009, 12h26
  4. Probleme avec erase(iter)
    Par hirobym dans le forum SL & STL
    Réponses: 4
    Dernier message: 22/12/2007, 15h25
  5. Réponses: 6
    Dernier message: 26/03/2006, 13h49

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