A voir également:
- Acces aux attribut prives
- Acces rapide - Guide
- Accès refusé - Guide
- Trousseau d'accès iphone - Guide
- Accès presse papier - Guide
- Je n'ai plus acces a ma boite mail gmail - Guide
18 réponses
Hello,
Effectivement, y'a souci.
D'après ton code, j'imagine que tu veux retourner une valeur présente dans un vecteur, ou un tableau. Mais, pour ça, il faut que tu aies un attribut de type Vecteur3D dans ta classe Mobile.
Du coup, ton code serait plutôt le suivant:
En passant, si tu as plusieurs tests à faire (ce que je pense), je te propose ceci
A noter, que j'ai pris en compte le fait que ton attribut mVecteur soit correctement initialisé.
Effectivement, y'a souci.
D'après ton code, j'imagine que tu veux retourner une valeur présente dans un vecteur, ou un tableau. Mais, pour ça, il faut que tu aies un attribut de type Vecteur3D dans ta classe Mobile.
public class Mobile
{
Vecteur3D mVecteur;
...
}
Du coup, ton code serait plutôt le suivant:
double Mobile ::operator[] ( int p ) const {
double result = 0.0;
if ( p==0 )
result = mVecteur.x;
return result;
}
En passant, si tu as plusieurs tests à faire (ce que je pense), je te propose ceci
double Mobile ::operator[] ( int p ) const {
double result = 0.0;
switch(p)
{
case 0:
result = mVecteur.x;
break;
case 1:
result = mVecteur.y;
break;
case 2:
result = mVecteur.z;
break;
default:
result = 0.0;
}
return result;
}
A noter, que j'ai pris en compte le fait que ton attribut mVecteur soit correctement initialisé.
Bonjouuur ;
Merci bien pour ta réponse
Mais enfait j'ai deux attributs de types Vecteur3D dans mobile a voir : position et vitesse
du coup je ne sais pas lequel mettre comme "mVecteur" que tu as choisis
prcq normalement je veux que le compilateur comprenne quand j'écris position[0] et vitesse[0]....
???
Merci bien pour ta réponse
Mais enfait j'ai deux attributs de types Vecteur3D dans mobile a voir : position et vitesse
du coup je ne sais pas lequel mettre comme "mVecteur" que tu as choisis
prcq normalement je veux que le compilateur comprenne quand j'écris position[0] et vitesse[0]....
???
C'est à toi de voir ce que tu veux faire en implémentant l'opérateur [].
J'ai mis
J'ai mis
mVecteurpour te montrer mais tu peux le remplacer par
positionou
vitessesuivant tes besoins
J'ai besoin des deux !! il faut qu'il reconnaisse position[0] par expl et aussi vitesse[2] ...
tu me comprends ?!
Merci d'avance ..
tu me comprends ?!
Merci d'avance ..
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questiontu me comprends ?!Oui et non.
Je vois ce que tu veux faire mais vu la signature de la surcharge de l'opérateur [], tu ne peux retourner qu'un double. Il te faut donc 2 méthodes, par exemple
double Mobile::getPosition(int p) const {
double result = 0.0;
switch(p)
{
case 0:
result = position.x;
break;
case 1:
result = position.y;
break;
case 2:
result = position.z;
break;
default:
result = 0.0;
}
return result;
}
double Mobile::getVitesse(int p) const {
double result = 0.0;
switch(p)
{
case 0:
result = vitesse.x;
break;
case 1:
result = vitesse.y;
break;
case 2:
result = vitesse.z;
break;
default:
result = 0.0;
}
return result;
}
ça répond à ton besoin?
Et il t'es demandé de retourné quoi?
Tu ne peux pas retourner la vitesse ET la position en même temps.
A moins de créer une paire de doubles, mais je ne pense pas que cela soit demandé
Tu ne peux pas retourner la vitesse ET la position en même temps.
A moins de créer une paire de doubles, mais je ne pense pas que cela soit demandé
Donc la position. Donc ma réponse ici n'est pas trop mal, en remplaçant mVecteur par position
Je n'ai rien à gagner dans l'histoire...C'est juste un passe-temps: j'aide les autres si je le peux. En retour, je ne demande rien, si ce n'est un petit "merci"
.. !!Hey! Désolé si je comprends mal, je n'ai pas l'énoncé sous les yeux. Je peux aussi te laisser tranquille si tu le souhaites... ;)
Je n'ai rien à gagner dans l'histoire...C'est juste un passe-temps: j'aide les autres si je le peux. En retour, je ne demande rien, si ce n'est un petit "merci"
Je viens de penser à une chose:
Mais je ne sais pas si ça répond vraiment à la question.
double Mobile ::operator[] (int p) const {
double result = 0.0;
switch(p)
{
case 0:
result = position.x;
break;
case 1:
result = position.y;
break;
case 2:
result = position.z;
break;
case 3:
result = vitesse.x;
break;
case 4:
result = vitesse.y;
break;
case 5:
result = vitesse.z;
break;
default:
result = 0.0;
}
return result;
}
Mais je ne sais pas si ça répond vraiment à la question.
Re,
Pour corriger tes problèmes d'attributs private:
Pour corriger tes problèmes d'attributs private:
double Mobile ::operator[] (int p) const {
double result = 0.0;
switch(p)
{
case 0:
result = position.getX();
break;
case 1:
result = position.getY();
break;
case 2:
result = position.getZ();
break;
case 3:
result = vitesse.getX();
break;
case 4:
result = vitesse.getY();
break;
case 5:
result = vitesse.getZ();
break;
default:
result = 0.0;
}
return result;
}
je n'arrive même pas a tester ta proposition
le compilateur déconne
même en mettant rien dans mon fichier Veteur.cpp
il me rend 180 erreurs et me génère un fichier streambuf !!!!!
je ne comprends plus rien !!
le compilateur déconne
même en mettant rien dans mon fichier Veteur.cpp
il me rend 180 erreurs et me génère un fichier streambuf !!!!!
je ne comprends plus rien !!
ofait j'ai teste rien que les getters qui me font ces erreurs la
je ne pourrai pas les utiliser donnc !!
Oo
je ne pourrai pas les utiliser donnc !!
Oo
sauf que l'operateur ne marche pas correctement
quand je fais : position[0]=0;
on me dit : non left-value in assignement ..
Oo
quand je fais : position[0]=0;
on me dit : non left-value in assignement ..
Oo