Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2355 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  comment fait-on avec un getter pour accéder a un tableau en private ?

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

comment fait-on avec un getter pour accéder a un tableau en private ?

n°401688
terminator​_t800
Posté le 20-05-2003 à 19:31:23  profilanswer
 

pour pouvoir l'utiliser ensuite en dehors des fonctions membres
merci.

mood
Publicité
Posté le 20-05-2003 à 19:31:23  profilanswer
 

n°401691
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 20-05-2003 à 19:38:28  profilanswer
 

Stune blague ce topic ?  :heink:  
=> tu renvoies simplement le pointeur du tableau (en const de préférence, ça fait plus joli)
OU
=> tu fais une méthode (const) qui renvoie la cellule correspondant à l'indice passé en paramètre.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°401694
terminator​_t800
Posté le 20-05-2003 à 19:43:00  profilanswer
 

et le pointeur tu le déclare où ?
je précise que je suis débutant en C++, j'essai d'apprendre tout seul.

n°401714
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 20-05-2003 à 20:27:35  profilanswer
 

Le pointeur est déclaré dans ta classe
 

Code :
  1. class ZeClass {
  2. private:
  3. int* monTableau;
  4. public:
  5. ZeClass();
  6. ~ZeClass();
  7. const int* getTableau() const { return monTableau; }
  8. }


 
en créant le tableau dans le constructeur avec new
et en détruisant le tableau dans le destructeur avec delete


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°401732
terminator​_t800
Posté le 20-05-2003 à 20:47:10  profilanswer
 

(EDIT :t'aurais une façon plus simple, genre sans les const et avec un minimum de pointeurs pasque là chuis largué)
'tain je suis largué  :sweat:  
-tu as déclaré un pointeur au lieu du tableau, c normal ?
-a quoi servent les const ?
-pourquoi tu as mis une * après le int de la fonction ?
-le return, je l'affecte ensuite a un pointeur je suppose ?
merci.


Message édité par terminator_t800 le 20-05-2003 à 20:59:17
n°401757
theshockwa​ve
I work at a firm named Koslow
Posté le 20-05-2003 à 21:36:54  profilanswer
 

terminator_T800 a écrit :


-tu as déclaré un pointeur au lieu du tableau, c normal ?


C'est pour faire des 'tableaux' dynamiques ...
 

terminator_T800 a écrit :


-a quoi servent les const ?


C'est pour dire que c'est constant ! :D
 

terminator_T800 a écrit :


-pourquoi tu as mis une * après le int de la fonction ?


Heuuuu ... 'int*', ca ne te rappelle rien ? C'est une déclaration de pointeur, ca marche aussi pour le type de retour de la fonction ...
 

terminator_T800 a écrit :


-le return, je l'affecte ensuite a un pointeur je suppose ?
merci.


Oui oui ...
 
Allez, j'ajoute ma pierre d'abstraction à l'édifice ...
 

Code :
  1. static const int NB_ELEMS = 10;
  2. class ZeClass {
  3. private:
  4.   int monTableau[NB_ELEMS];
  5. public:
  6.   ZeClass();
  7.   ~ZeClass();
  8.   inline const int* getTableau() const { return monTableau; } // Edit : Non, je n'ai pas fait de cast ... :D
  9. }

 
 
Je suppose que tu aurais préféré définir ton tableau de cette manière ... Tout dépend de l'utilité qu'a ton tableau par la suite ...


Message édité par theshockwave le 23-05-2003 à 11:34:54

---------------
last.fm
n°401793
terminator​_t800
Posté le 20-05-2003 à 22:11:29  profilanswer
 

merci pour tes réponses  :)

n°401836
pc2000
Posté le 20-05-2003 à 23:16:05  profilanswer
 

Comme l'expliquait Tetragrammaton IHVH, tu fais un assesseur (ici = getTableau()) qui permet d'accéder à ton tableau (un tableau qui est en fait en quelque sorte un "pointeur constant" ).
Comme ça tu peux retourner ton attribut privé (le tableau) grâce à la méthode public crée (l'assesseur), voilà ;)
C'est vrai c'est très basic mais on est tous passé par là ...
Les codes proposés sont parfaits, rien à redire.


Message édité par pc2000 le 20-05-2003 à 23:20:33
n°401859
haazheel
Posté le 20-05-2003 à 23:33:03  profilanswer
 

Tiens, un qui galère comme moi :D  
 
J'ai posé le même genre de questions ya quelque temps, voilà le topic:
 
http://forum.hardware.fr/forum2.ph [...] subcat=386
 
Bon courage!!


---------------
Another .Net Blog
n°402078
El_gringo
Posté le 21-05-2003 à 08:57:03  profilanswer
 

PC2000 a écrit :

(un tableau qui est en fait en quelque sorte un "pointeur constant" ).


 
Pourquoi "en quelque sorte" ? Exactement oui !

mood
Publicité
Posté le 21-05-2003 à 08:57:03  profilanswer
 

n°402397
theshockwa​ve
I work at a firm named Koslow
Posté le 21-05-2003 à 11:20:09  profilanswer
 

El_gringo a écrit :


 
Pourquoi "en quelque sorte" ? Exactement oui !


 
Il vaut mieux être clair sur la différence entre tableau et pointeur


---------------
last.fm
n°402651
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 21-05-2003 à 13:39:19  profilanswer
 

theShOcKwAvE a écrit :


 
  inline const int* getTableau() const { return (int *)monTableau; }  
 


 
C'est quoi ce cast futuriste ?  :heink:  :heink:  :heink:  
A quoi sert de caster un "int*" vers un "int*" ?  :pt1cable:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°402671
El_gringo
Posté le 21-05-2003 à 13:52:45  profilanswer
 

theShOcKwAvE a écrit :


 
Il vaut mieux être clair sur la différence entre tableau et pointeur


 
Ha bon, et pourquoi ça ? Quelle différence d'ailleurs ?
A part à la déclaration, il n'y en a pas !

n°402673
seblamb
Posté le 21-05-2003 à 13:53:15  profilanswer
 

Tetragrammaton IHVH a écrit :


 
C'est quoi ce cast futuriste ?  :heink:  :heink:  :heink:  
A quoi sert de caster un "int*" vers un "int*" ?  :pt1cable:  


 
Surtout que si on change le type de monTableau sans modifier la fonction et bien le compilateur ne vera aucune erreur. Il faut eviter au maximum les cast "sauvages" en C++ ( sinon on fait du C ).

n°402676
El_gringo
Posté le 21-05-2003 à 13:54:42  profilanswer
 

Tetragrammaton IHVH a écrit :


 
C'est quoi ce cast futuriste ?  :heink:  :heink:  :heink:  
A quoi sert de caster un "int*" vers un "int*" ?  :pt1cable:  


 
...il ne comprend pas qu'un tableau C'EST un pointeur ! :D
D'ailleurs, s'il tient à tout prix à faire un cast (inutile, ms bon...), mieux vaut faire :

Code :
  1. inline const int* getTableau() const { return (const int *)monTableau; }

n°402695
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 21-05-2003 à 14:07:31  profilanswer
 

seblamb a écrit :


 
Surtout que si on change le type de monTableau sans modifier la fonction et bien le compilateur ne vera aucune erreur. Il faut eviter au maximum les cast "sauvages" en C++ ( sinon on fait du C ).


 
J'incrémente à fond :jap:  


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°403551
pc2000
Posté le 21-05-2003 à 22:14:00  profilanswer
 

El_gringo a écrit :


 
Ha bon, et pourquoi ça ? Quelle différence d'ailleurs ?
A part à la déclaration, il n'y en a pas !


Il y a une différence entre pointeur et tableau uniquement dans la déclaration (après un tableau est un pointeur).
En plus cette notion de pointeur est assez difficile à assimiler chez les débutants (j'ai eu un peu de mal à comprendre au début) donc j'essayais de ne pas l'embrouiller davantage ;)

n°403730
tanguy
Posté le 22-05-2003 à 00:15:49  profilanswer
 

Tetragrammaton IHVH a écrit :


=> tu renvoies simplement le pointeur du tableau (en const de préférence, ça fait plus joli)
OU
=> tu fais une méthode (const) qui renvoie la cellule correspondant à l'indice passé en paramètre.


 
Une surcharge de l'operateur [], ca marche meme pour les tableaux a 2 dimensions ca donne un truc du genre:
 

Code :
  1. private:
  2. int _graph[arraySize][_matrixLength];
  3. public:
  4. /**
  5. * allow to use the Graph class like a matrix: graph[i][j] for example
  6. */
  7. const int * operator[] (unsigned int i) const { return _graph[i]; }


 
Ce qui est cool avec cette solution c'est que on peut changer la variable privee d'une matrix [][] en un vector, list ou n'importe quoi d'autre sans pour autant chenger le code qui utilise la classe. On doit juste changer la surcharge de l'operateur []. En gros ca encapsule plus, et c'est ce qu'on veut avec la programmation object :D

n°404157
theshockwa​ve
I work at a firm named Koslow
Posté le 22-05-2003 à 13:25:26  profilanswer
 

oui, effectivement, je devais être un peu (très ?) fatigué ce soir là ....
 
C'est vrai que le cast n'est pas beau, surtout qu'on n'en a pas besoin, effectivement ... (j'ai vraiment fumé ce soir là ! :D)
 
Je suis d'accord sur le fait qu'un tableau n'est qu'une adresse à l'exec, mais par contre, ca n'a rien à voir au niveau de la compilation ... [:arrakis99] un tableau n'est pas une l-value ...


---------------
last.fm
n°404842
BifaceMcLe​OD
The HighGlandeur
Posté le 22-05-2003 à 17:49:59  profilanswer
 

PC2000 a écrit :

Comme l'expliquait Tetragrammaton IHVH, tu fais un assesseur (ici = getTableau()) ...


(Vraie) question de vocabulaire...
 
Je sais, je dérive du topic initial, mais c'est bien la première fois que je rencontre ce mot : "assesseur". Jusqu'à présent, j'avais toujours entendu "accesseur" (prononcé "ax-cè-seur" ), bien qu'il s'agisse d'un anglicisme.
Vous avez entendu vos profs utiliser ce mot ? (et si oui, vous êtes nombreux dans ce cas ?)
 
Je suis d'autant plus surpris qu'en français, normalement, l'"assesseur", c'est celui qui "s'asseoit", ou qui "est assis". Rien à voir donc avec celui qui "donne accès", donc.

n°404846
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 22-05-2003 à 17:52:41  profilanswer
 

BifaceMcLeOD a écrit :


(Vraie) question de vocabulaire...
 
Je sais, je dérive du topic initial, mais c'est bien la première fois que je rencontre ce mot : "assesseur". Jusqu'à présent, j'avais toujours entendu "accesseur" (prononcé "ax-cè-seur" ), bien qu'il s'agisse d'un anglicisme.


 
oui c'est accesseur  :jap:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°404926
BifaceMcLe​OD
The HighGlandeur
Posté le 22-05-2003 à 18:28:40  profilanswer
 

Ah, OK. Le clavier de PC2000 a dû zozoter, alors... :D

n°405203
pc2000
Posté le 22-05-2003 à 23:23:28  profilanswer
 

BifaceMcLeOD a écrit :


(Vraie) question de vocabulaire...
 
Je sais, je dérive du topic initial, mais c'est bien la première fois que je rencontre ce mot : "assesseur". Jusqu'à présent, j'avais toujours entendu "accesseur" (prononcé "ax-cè-seur" ), bien qu'il s'agisse d'un anglicisme.
Vous avez entendu vos profs utiliser ce mot ? (et si oui, vous êtes nombreux dans ce cas ?)
 
Je suis d'autant plus surpris qu'en français, normalement, l'"assesseur", c'est celui qui "s'asseoit", ou qui "est assis". Rien à voir donc avec celui qui "donne accès", donc.


Oui je confonds les deux, ce n'est pas rare que je me fasse corriger, je sais pas pourquoi je le prononce bien mais je mets 2 s  :D


Message édité par pc2000 le 22-05-2003 à 23:26:14
n°405430
El_gringo
Posté le 23-05-2003 à 09:10:17  profilanswer
 

Tetragrammaton IHVH a écrit :


 
oui c'est accesseur  :jap:  


 
C'est accesseur, mais prononcé [assesseur]...

n°405668
Taz
bisounours-codeur
Posté le 23-05-2003 à 11:15:05  profilanswer
 

qu'il est laid ce cast C  :fou:

n°405714
theshockwa​ve
I work at a firm named Koslow
Posté le 23-05-2003 à 11:35:07  profilanswer
 

++Taz a écrit :

qu'il est laid ce cast C  :fou:  


 
:whistle:


---------------
last.fm
n°405722
Taz
bisounours-codeur
Posté le 23-05-2003 à 11:40:16  profilanswer
 

j'ai décidé de m'attaquer à ce problème: à moins que les gens utilisent ça en cachette, je vois de mon en moins de char* et FILE*, meme Joce utilise STL
 
mais y a encore beaucoup à faire, ma prochaine mission, c'est de faire la chasse au cast C. si j'ai le temps, fodrait que je fasse un topic dessus
 
tremblez [:samduloft]  :D

n°405729
theshockwa​ve
I work at a firm named Koslow
Posté le 23-05-2003 à 11:50:02  profilanswer
 

++Taz a écrit :

j'ai décidé de m'attaquer à ce problème: à moins que les gens utilisent ça en cachette, je vois de mon en moins de char* et FILE*, meme Joce utilise STL
 
mais y a encore beaucoup à faire, ma prochaine mission, c'est de faire la chasse au cast C. si j'ai le temps, fodrait que je fasse un topic dessus
 
tremblez [:samduloft]  :D  


 
(je dois bien admettre que c'est un mauvais réflexe qu'on choppe très vite ... D'autant plus que c'est plus facile à taper que static_cast<int*> par exemple ... :D)


---------------
last.fm
n°405923
Konar
Posté le 23-05-2003 à 13:40:27  profilanswer
 

++Taz a écrit :

j'ai décidé de m'attaquer à ce problème: à moins que les gens utilisent ça en cachette, je vois de mon en moins de char* et FILE*, meme Joce utilise STL
 
mais y a encore beaucoup à faire, ma prochaine mission, c'est de faire la chasse au cast C. si j'ai le temps, fodrait que je fasse un topic dessus
 
tremblez [:samduloft]  :D  


 
t'es mal barré pour ceux ki font du win32... ca cast dans tous les sens, et y a pas moyen ke je mette des static_cast ou autres, ca rendrait trop le code incomprehensible.
 
de plus dans les msdn c'est fait comme ca (C oblige), donc la plupart des gens suivront l'exemple...

n°405932
theshockwa​ve
I work at a firm named Koslow
Posté le 23-05-2003 à 13:45:30  profilanswer
 

Konar a écrit :


 
t'es mal barré pour ceux ki font du win32... ca cast dans tous les sens, et y a pas moyen ke je mette des static_cast ou autres, ca rendrait trop le code incomprehensible.
 
de plus dans les msdn c'est fait comme ca (C oblige), donc la plupart des gens suivront l'exemple...
 


 
(effectivement ... syntaxiquement parlant, les docs MS sont en général entre le C et le C++ ...)


---------------
last.fm
n°405939
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 23-05-2003 à 13:49:44  profilanswer
 

El_gringo a écrit :


 
C'est accesseur, mais prononcé [assesseur]...


 
????  :pt1cable:  
 
Tu prononces "asséder" au lieu d'accéder ? :lol:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°406089
Konar
Posté le 23-05-2003 à 15:03:05  profilanswer
 

theShOcKwAvE a écrit :


 
(effectivement ... syntaxiquement parlant, les docs MS sont en général entre le C et le C++ ...)


 
toutes les fct win32 de base sont en C (ie les exemples sont fait pour marcher en C), mais sont utilisées dans bcp de progs C++, donc forcement...

n°406107
theshockwa​ve
I work at a firm named Koslow
Posté le 23-05-2003 à 15:10:26  profilanswer
 

Konar a écrit :


 
toutes les fct win32 de base sont en C (ie les exemples sont fait pour marcher en C), mais sont utilisées dans bcp de progs C++, donc forcement...  


 
Pour DirectX, certains exemples sont en C++ puisqu'ils passent par les méthodes des objets directement, sans passer par une forme du style monobj->vtable->mamethode ... Et pourtant, le reste du code est en 100% C ...
(à moins que ce soit possible de faire l'appel à la méthode sans passer par vtable en C, mais ca ne marche pas sous Visual, dans ce cas là)
 
Edit : fautes de frappe


Message édité par theshockwave le 23-05-2003 à 15:11:04

---------------
last.fm
n°406114
El_gringo
Posté le 23-05-2003 à 15:12:22  profilanswer
 

Tetragrammaton IHVH a écrit :


 
????  :pt1cable:  
 
Tu prononces "asséder" au lieu d'accéder ? :lol:


 
ça vient pas du mot accèder couillon

n°406134
theshockwa​ve
I work at a firm named Koslow
Posté le 23-05-2003 à 15:17:08  profilanswer
 

El_gringo a écrit :


 
ça vient pas du mot accèder couillon


 
:heink: et ca vient d'où, alors ?


---------------
last.fm
n°406167
El_gringo
Posté le 23-05-2003 à 15:27:06  profilanswer
 

theShOcKwAvE a écrit :


 
:heink: et ca vient d'où, alors ?


 
Je sais pas. Mais d'ailleurs, ça s'écrit "assesseur"

n°406204
theshockwa​ve
I work at a firm named Koslow
Posté le 23-05-2003 à 15:38:55  profilanswer
 

El_gringo a écrit :


 
Je sais pas. Mais d'ailleurs, ça s'écrit "assesseur"


 
Assesseur : n.m. (latin : assessor, celui qui aide, conseille)
1. Juge qui assiste le président du tribunal et délibère avec lui
2. Nom donné aux membres de certaines juridictions d'exceptions (tribunaux paritaires des baux ruraux, tribunaux maritimes commerciaux ...) ou aux membres de bureaux d'assemblées électorales, etc.
3. Chez les romains, jurisconsulte qui avait pour mission d'éclairer les magistrats en vue de leur décisions.
4. Sous l'Ancien Régime, juge qui suppléait le chef de la juridiction ou officier de justice adjoint qui assistait les juges.

 
Ca me semble un peu hors sujet ...
Voyons Accesseur, maintenant : Surprise, il n'est pas dans mon encyclopédie ...
MAis quoiqu'il arrive, je continuerai d'utiliser "accesseur", car éthymologiquement, c'est ce qui colle le plus à la fonctionnalité de la dite méthode ...


---------------
last.fm
n°406231
El_gringo
Posté le 23-05-2003 à 15:54:47  profilanswer
 

theShOcKwAvE a écrit :


 
Assesseur : n.m. (latin : assessor, celui qui aide, conseille)
1. Juge qui assiste le président du tribunal et délibère avec lui
2. Nom donné aux membres de certaines juridictions d'exceptions (tribunaux paritaires des baux ruraux, tribunaux maritimes commerciaux ...) ou aux membres de bureaux d'assemblées électorales, etc.
3. Chez les romains, jurisconsulte qui avait pour mission d'éclairer les magistrats en vue de leur décisions.
4. Sous l'Ancien Régime, juge qui suppléait le chef de la juridiction ou officier de justice adjoint qui assistait les juges.

 
Ca me semble un peu hors sujet ...
Voyons Accesseur, maintenant : Surprise, il n'est pas dans mon encyclopédie ...
MAis quoiqu'il arrive, je continuerai d'utiliser "accesseur", car éthymologiquement, c'est ce qui colle le plus à la fonctionnalité de la dite méthode ...


 
...Ben, tu fais ta vie hein!
Cela dit, tu te plantes, et choisis de continuer à te planter. C vrai que j'ai aucun argument. Une personne de confiance me l'a assuré, c tout.

n°406236
theshockwa​ve
I work at a firm named Koslow
Posté le 23-05-2003 à 15:57:08  profilanswer
 

El_gringo a écrit :


 
...Ben, tu fais ta vie hein!
Cela dit, tu te plantes, et choisis de continuer à te planter. C vrai que j'ai aucun argument. Une personne de confiance me l'a assuré, c tout.


 
c'est le genre de personnes qui t'assure qu'on doit écrire cédérom ? :D
 
Edit : Et Sélecteur, ca vous plait pas, comme mot ? :D


Message édité par theshockwave le 23-05-2003 à 16:04:54

---------------
last.fm
n°406291
El_gringo
Posté le 23-05-2003 à 16:30:06  profilanswer
 

theShOcKwAvE a écrit :


 
c'est le genre de personnes qui t'assure qu'on doit écrire cédérom ? :D
 
Edit : Et Sélecteur, ca vous plait pas, comme mot ? :D


 
Non, justement, c'est l'genre de personne qui dis pas de conneries.
 
EDIT : On dit Selector, pas sélecteur !
 
:D


Message édité par El_gringo le 23-05-2003 à 16:30:44
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
  FORUM HardWare.fr
  Programmation
  C++

  comment fait-on avec un getter pour accéder a un tableau en private ?

 

Sujets relatifs
Comment accéder à un contrôle dont on connait le nom ?Tableau de record
Supprimer les lignes redondandes dans un tableau excel ?????[HTML] tableau des caracteres spéciaux
Erreur, impossible de mettre une $var dans un tableau...tableau dynamique multidimensionnel
Comment peux t-on virer une case d'un tableau sur sa/ses valeurs ?vector ou tableau
JavaScript, accéder à plusieurs objets via une boucle[HTML]mettre un lien sur une ligne d'un tableau
Plus de sujets relatifs à : comment fait-on avec un getter pour accéder a un tableau en private ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR