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 :

Problème d'accesseurs en C++


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 56
    Par défaut Problème d'accesseurs en C++
    Bonjour a vous.
    Je travail en ce moment en C++ et je rencontre un petit souci.
    En fait j'ai une classe qui contient un tableau privé,et je voudrais savoir a partir d'une fonction membre acceder a ses éléments grace aux accesseurs (get()).Comment doit t'on proceder ( parcourir le tableau dans l'accesseur , parcourir le tableau puis appeler l'accessuer , quel syntaxe ).

    Merci d'avance a bientot

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int MaClasse::get(int n)
    {
     int num=0;
     if(n>=0 && n<indicemaxtab)
      num=tab[n];
     else
     cout<<"erreur d'indice";
     
     return num;
     
    }
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Davidbrcz
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int MaClasse::get(int n)
    {
     int num=0;
     if(n>=0 && n<indicemaxtab)
      num=tab[n];
     else
     cout<<"erreur d'indice";
     
     return num;
     
    }
    Un tableau c'est mieux avec des std::vector
    Pour parcourir un vector, utilise un itérateur...

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Heum.
    Vait mal compris.
    Je croyais quil voulait une fonctionné get pour retourner la valeur d'un tableau 'normal'.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Davidbrcz
    Heum.
    Vait mal compris.
    Je croyais quil voulait une fonctionné get pour retourner la valeur d'un tableau 'normal'.
    C'est possible... Mais la remarque était pour lui...
    Mieux vaut utiliser un vector!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 56
    Par défaut
    Merci a vous deux j'ai réussi a réglé mon problème grace a la première méthode car je n'ai pas trés bien compris la seconde . Merci quand meme .

    A bientot

  7. #7
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Pour info un vector est un tableau de taille variable contenue dans la STL.
    + d'info recherche : vector stl sur google.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  8. #8
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int MaClasse::get(int n) {  
       int num=0; 
       if(n>=0 && n<indicemaxtab)  
          num=tab[n]; 
       else  
          cout<<"erreur d'indice";   
       return num;   
    }
    Ce code retourne 0 quand l'indice est hors borne... A mon avis, ce n'est pas une bonne idée, de même qu'afficher l'erreur sur cout (ce devrait être cerr d'ailleurs). Il me semble que lever une exception est une bonne idée, et utiliser la fonction at, membre de vector, est l'implémentation la plus simple possible pour cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int MaClasse::get(size_t n) {
       return tab.at(n);
    }

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Et la fonction get devrait être déclarée const, pour indiquer qu'elle ne modifie pas l'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class MaClasse
    {
       //...
       int get(int n) const;
       //...
    };
     
     
    int MaClasse::get(int n) const {  
       // ...
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Et la fonction get devrait être déclarée const
    Exactement. Merci pour la précision

Discussions similaires

  1. Problème avec l'accesseur get
    Par marcov dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 20/10/2013, 17h17
  2. Problème d'accesseur (enfin, je pense…)
    Par CrashBC dans le forum Débuter
    Réponses: 4
    Dernier message: 07/07/2013, 12h56
  3. [VALA] Problèmes avec les accesseurs
    Par Gamall dans le forum GTK+
    Réponses: 9
    Dernier message: 18/03/2010, 12h06
  4. Réponses: 6
    Dernier message: 07/07/2006, 17h27
  5. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18

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