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

  1. 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
    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
      1. Merci charSnipeur ! ta reponse m'a aidé et eclaircit !

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