C++ classe et attributs

Résolu
velderama Messages postés 203 Statut Membre -  
velderama Messages postés 203 Statut Membre -
Bonjour,

J'ai une classe composée d' un point h et un point cpp.

Ma question serait :

- si je fais dans le .cpp
maclasse::setvariableclasse(var v); est ce que c'est different si j'avais fais directement mavariableclasse = v;

car j'ai remarqué que dans le .cpp j'ai quand meme acces aux variables privées !

--
Satisfait ou remboursé ! ^_^

4 réponses

  1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    C'est bien ce que je pensais. tu es à l'intérieur de la class (si on parle bien de l'endroit en gras) donc forcement tu as acces aux memebres privés. D'ailleurs, tu peux te passer de la porté Traitement:: et juste faire un setMots(mot) ou directement mots.insert(mot);
    1
    1. velderama Messages postés 203 Statut Membre 10
       
      Merci charSnipeur ! ta reponse m'a aidé et eclaircit !

      UP
      0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    C'est trop flou ce que tu dit. Précise un peu, donne un exemple concret.
    0
    1. velderama Messages postés 203 Statut Membre 10
       
      Exemple

      j'ai mon .h
      #ifndef Traitement_H
      #define Traitement_H
      #include <iostream>
      #include <fstream>
      #include<stdio.h>
      #include <string>
      #include<set>
      
      using namespace std;
      
      class Traitement
      {
      
      //privees
      set<string > mots;
      
      public:
      
      void lireMots(const char *s);
      
      //MAJ des sets
      void setMots(string &s){mots.insert(s);}
      
      //Acces
      set<string> getMots(){return mots;}
      };
      
      #endif
      
      
      


      Et j'ai mon .cpp comme ceci :
      
        void Traitement::lireMots(const char *s){
          string line;
          ifstream f ;
          f.open(s,ifstream::out);
         
         //tant qu'on n'a pas atteint la fin de fichier
          for(unsigned no_line = 0;std::getline(f,line);++no_line){
                  unsigned beg = 0;
                  unsigned end = 1;
                  for(unsigned no_mot=0;end <line.size();++no_mot){
      		//On positionne a la fin du mot la variable "end"
                      for(;end < line.size();++end);
                      
                      string mot(line,beg,end-beg);//recuperation du mot                            
                     
                      Traitement::setMots(mot);//ajout du mot dans la liste
                                   
                      beg = end + 1;
                      end = beg + 1;
                  }//fin ligne
                         
              }//fin fichier 
           
      }
      
      set<string> s = Traitement::getMots();
      ...
      


      J'aimerai savoir si ca vaut la peine de faire la fonction setMots car en faisant directement(dans .cpp) mots.insert(mot);
      je n'ai pas de probleme quand je compile mais je ne suis pas sur que cela marche pareil.

      Conclusion : peut on se passer des fonctions set et get pour pouvoir travailler sur des variables privées (correctement)?
      0
  3. velderama Messages postés 203 Statut Membre 10
     
    Char ton "nouvelle" Le Dragon de la farce sur ton profil

    Je pourrai l'enregistrer chez moi j'ai commencé a lire et j'aimerai le finir ! ;)
    0