comment fait-on avec un getter pour accéder a un tableau en private ? - C++ - Programmation
Marsh Posté le 20-05-2003 à 19:38:28
Stune blague ce topic ?
=> 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.
Marsh Posté le 20-05-2003 à 19:43:00
et le pointeur tu le déclare où ?
je précise que je suis débutant en C++, j'essai d'apprendre tout seul.
Marsh Posté le 20-05-2003 à 20:27:35
Le pointeur est déclaré dans ta classe
Code :
|
en créant le tableau dans le constructeur avec new
et en détruisant le tableau dans le destructeur avec delete
Marsh Posté le 20-05-2003 à 20:47:10
(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é
-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.
Marsh Posté le 20-05-2003 à 21:36:54
terminator_T800 a écrit : |
C'est pour faire des 'tableaux' dynamiques ...
terminator_T800 a écrit : |
C'est pour dire que c'est constant !
terminator_T800 a écrit : |
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 : |
Oui oui ...
Allez, j'ajoute ma pierre d'abstraction à l'édifice ...
Code :
|
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 ...
Marsh Posté le 20-05-2003 à 23:16:05
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.
Marsh Posté le 20-05-2003 à 23:33:03
Tiens, un qui galère comme moi
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!!
Marsh Posté le 21-05-2003 à 08:57:03
PC2000 a écrit : (un tableau qui est en fait en quelque sorte un "pointeur constant" ). |
Pourquoi "en quelque sorte" ? Exactement oui !
Marsh Posté le 21-05-2003 à 11:20:09
El_gringo a écrit : |
Il vaut mieux être clair sur la différence entre tableau et pointeur
Marsh Posté le 21-05-2003 à 13:39:19
theShOcKwAvE a écrit : |
C'est quoi ce cast futuriste ?
A quoi sert de caster un "int*" vers un "int*" ?
Marsh Posté le 21-05-2003 à 13:52:45
theShOcKwAvE a écrit : |
Ha bon, et pourquoi ça ? Quelle différence d'ailleurs ?
A part à la déclaration, il n'y en a pas !
Marsh Posté le 21-05-2003 à 13:53:15
Tetragrammaton IHVH 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 ).
Marsh Posté le 21-05-2003 à 13:54:42
Tetragrammaton IHVH a écrit : |
...il ne comprend pas qu'un tableau C'EST un pointeur !
D'ailleurs, s'il tient à tout prix à faire un cast (inutile, ms bon...), mieux vaut faire :
Code :
|
Marsh Posté le 21-05-2003 à 14:07:31
seblamb a écrit : |
J'incrémente à fond
Marsh Posté le 21-05-2003 à 22:14:00
El_gringo a écrit : |
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
Marsh Posté le 22-05-2003 à 00:15:49
Tetragrammaton IHVH a écrit : |
Une surcharge de l'operateur [], ca marche meme pour les tableaux a 2 dimensions ca donne un truc du genre:
Code :
|
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
Marsh Posté le 22-05-2003 à 13:25:26
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à ! )
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 ... un tableau n'est pas une l-value ...
Marsh Posté le 22-05-2003 à 17:49:59
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.
Marsh Posté le 22-05-2003 à 17:52:41
BifaceMcLeOD a écrit : |
oui c'est accesseur
Marsh Posté le 22-05-2003 à 23:23:28
BifaceMcLeOD a écrit : |
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
Marsh Posté le 23-05-2003 à 09:10:17
ReplyMarsh Posté le 23-05-2003 à 11:35:07
ReplyMarsh Posté le 23-05-2003 à 11:40:16
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
Marsh Posté le 23-05-2003 à 11:50:02
++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 |
(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 ... )
Marsh Posté le 23-05-2003 à 13:40:27
++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 |
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...
Marsh Posté le 23-05-2003 à 13:45:30
Konar a écrit : |
(effectivement ... syntaxiquement parlant, les docs MS sont en général entre le C et le C++ ...)
Marsh Posté le 23-05-2003 à 13:49:44
El_gringo a écrit : |
????
Tu prononces "asséder" au lieu d'accéder ?
Marsh Posté le 23-05-2003 à 15:03:05
theShOcKwAvE 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...
Marsh Posté le 23-05-2003 à 15:10:26
Konar a écrit : |
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
Marsh Posté le 23-05-2003 à 15:12:22
Tetragrammaton IHVH a écrit : |
ça vient pas du mot accèder couillon
Marsh Posté le 23-05-2003 à 15:17:08
El_gringo a écrit : |
et ca vient d'où, alors ?
Marsh Posté le 23-05-2003 à 15:27:06
theShOcKwAvE a écrit : |
Je sais pas. Mais d'ailleurs, ça s'écrit "assesseur"
Marsh Posté le 23-05-2003 à 15:38:55
El_gringo 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 ...
Marsh Posté le 23-05-2003 à 15:54:47
theShOcKwAvE 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.
Marsh Posté le 23-05-2003 à 15:57:08
El_gringo a écrit : |
c'est le genre de personnes qui t'assure qu'on doit écrire cédérom ?
Edit : Et Sélecteur, ca vous plait pas, comme mot ?
Marsh Posté le 23-05-2003 à 16:30:06
theShOcKwAvE a écrit : |
Non, justement, c'est l'genre de personne qui dis pas de conneries.
EDIT : On dit Selector, pas sélecteur !
Marsh Posté le 20-05-2003 à 19:31:23
pour pouvoir l'utiliser ensuite en dehors des fonctions membres
merci.