C++ classe et attributs
Résolu
velderama
Messages postés
203
Statut
Membre
-
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é ! ^_^
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
-
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);
-
C'est trop flou ce que tu dit. Précise un peu, donne un exemple concret.
-
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)?
-
-
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 ! ;) -
ty connais tu en encodage?
http://www.commentcamarche.net/forum/affich 6095574 c encodage iso latin1 utf8#dernier
pourrai tu m'aider c'est important !
Merci