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 :

Problème accès à une méthode d'un vecteur de classe


Sujet :

SL & STL C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Points : 27
    Points
    27
    Par défaut Problème accès à une méthode d'un vecteur de classe
    Bonjour à tous,
    Je tiens d'abord à m'excuser si la question est "bête" mais je débute en C++.

    J'ai créé un vecteur de classe.

    Voici les classes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Automate
    {
    private:
        std::vector<Etat> m_tab_etats;
        Alphabet m_alphabet;
     
    public:
        Automate();
        void init_alphabet(int alphabet);
        void ajout_etat(int numero);
        int etat_existant(int numero);
        ~Automate();
     
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class Etat
    {
    private :
        bool m_est_initial;
        bool m_est_final;
        int m_numero;
        Liste_transitions m_liste_transition;
     
    public :
        Etat();
        Etat(int);
        ~Etat();
        int getNum();
     
    };
    Et je tente d'accéder à la méthode getNum() comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int Automate::etat_existant(int numero)
    {
      for(vector<Etat>::iterator i = m_tab_etats.begin(); i != m_tab_etats.end();++i)
      {
        cout << m_tab_etats[i].getNum() << endl;
        system("PAUSE");
      }
     
    }
    Pourriez vous m'indiquer ce qui ne vas pas.


    Merci beaucoup d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 23
    Points
    23
    Par défaut
    Salut.

    Quel est le problème en fin de compte ?
    qu'est-ce que la mtéhode etat_existant() affiche à l'écran ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    Le problème est que ça ne compile pas.
    La méthode état_existant affiche un entier récupérer par la méthode getNum().

    J'ai résolu la méthode en utilisant cette boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int unsigned i=0;i<m_tab_etats.size();i++)
      {
        if( numero == m_tab_etats[i].getNum() )
                    return i;
      }

    Je ne sais pas si c'est aussi correct algorithmiquement mais ça marche.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(vector<Etat>::iterator i = m_tab_etats.begin(); i != m_tab_etats.end();++i)
      {
        cout << m_tab_etats[i].getNum() << endl;
        system("PAUSE");
      }
    Ce code est faux comme tu t'en doute. i est un iterator par un index. Cele ne s'utilise pas pareil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(vector<Etat>::iterator i = m_tab_etats.begin(); i != m_tab_etats.end();++i)
      {
        cout << i->getNum() << endl;
        system("PAUSE");
      }
    En gros c'est un pointeur évolué
    http://cpp.developpez.com/faq/cpp/?p...L#STL_iterator

    Ce tuto pourrais t'intéresser :
    http://r0d.developpez.com/articles/algos-stl/

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/04/2014, 00h16
  2. problème d'accès à une méthode
    Par dharkan dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2012, 21h09
  3. Problème d'accès à une méthode
    Par rXpCH dans le forum Langage
    Réponses: 0
    Dernier message: 11/11/2010, 08h41
  4. Réponses: 3
    Dernier message: 09/10/2010, 18h09
  5. Problème avec une méthode virtuelle pure
    Par Burckel dans le forum C++
    Réponses: 4
    Dernier message: 05/12/2006, 13h00

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