C++ classe et attributs

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    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. Merci charSnipeur ! ta reponse m'a aidé et eclaircit !

      UP
  2. Contributeur
    C'est trop flou ce que tu dit. Précise un peu, donne un exemple concret.
    1. 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)?
  3. 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 ! ;)