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 !
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 !
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
Et j'ai mon .cpp comme ceci :
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)?
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 ! ;)
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
http://www.commentcamarche.net/forum/affich 6095574 c encodage iso latin1 utf8#dernier
pourrai tu m'aider c'est important !
Merci
UP