reference sur les éléments d'un tableau

reference sur les éléments d'un tableau

by Ulysse Oscar Faure -
Number of replies: 2

Bonjour,

ma classe Toupie utilise un élément Vecteur de taille 5 (il s'agit de l'un de ses attributs, mais la taille n'est pas obligatoire). Puis-je référencer ses éléments par des noms plus parlants comme teta, phi, psi ? j'ai essayé la syntaxe ''classique'' :

Class Toupie {

Vecteur P ;

double& teta (P[0]) ; // suite }

Le programme ne compile pas :

ISO C++ forbids declaration of 'P' with no type

redeclaration of int Toupie::P[0]

existe il une solution ?
In reply to Ulysse Oscar Faure

Re: reference sur les éléments d'un tableau

by Josué Antoine Maechling -

C'est normal que le programme ne compile pas, tu essayes d'initialiser teta (qui devrait d'ailleurs être theta si tu veux vraiment respecter) avec quelque chose qui n'existe pas encore (il ne faut jamais écrire ce genre de chose dans une classe !).

Pour t'éviter plus de boulot (et faire de la bonne programmation) je te conseillerais de simplement ne pas faire cela, ça a très peu de sens d'avoir deux fois la même variable en attribut. Sinon si tu veux vraiment le faire ça doit être dans le constructeur et le setter. Si tu veux des noms plus parlants supprime simplement le vecteur P et garde plusieurs double (ce qui ne serait pas très propre non plus mais c'est légèrement moins grave je dirais).

In reply to Ulysse Oscar Faure

Re: reference sur les éléments d'un tableau

by Jean-Cédric Chappelier -

Pour compléter la réponse de Josué (Merci !) : votre problème est en fait plus « profond » : ce n'est pas en soi un problème de C++ mais un problème de conception : vous dites que votre Toupie à un vecteur de taille 5 mais vous l'avez définie comme ceci :

Class Toupie {

Vecteur P ;

c.-à-d. en français : « une toupie (générique) a un Vecteur quelconque » (= de dimension non connue).
Vous ne pouvez donc pas affirmer dans un tel cas qu'il existe un « theta » pour une telle toupie. Si vous voulez que toutes vos Toupies aient VRAIMENT (au moins) un theta, il faut le concevoir comme tel. Les « problèmes de C++ » disparaîtront alors d'eux-mêmes (normalement).