Acces aux attribut prives
Fermé
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
-
12 oct. 2013 à 09:51
marlinne Messages postés 20 Date d'inscription mardi 5 juin 2012 Statut Membre Dernière intervention 13 octobre 2013 - 13 oct. 2013 à 16:07
marlinne Messages postés 20 Date d'inscription mardi 5 juin 2012 Statut Membre Dernière intervention 13 octobre 2013 - 13 oct. 2013 à 16:07
A voir également:
- Acces aux attribut prives
- Acces rapide - Guide
- Trousseau d'accès iphone - Guide
- Accès refusé - Guide
- Je n'ai plus acces a ma boite mail gmail - Guide
- Compte facebook piraté plus d'accès - Guide
18 réponses
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
12 oct. 2013 à 13:56
12 oct. 2013 à 13:56
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é.
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
12 oct. 2013 à 16:15
12 oct. 2013 à 16:15
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]....
???
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
12 oct. 2013 à 16:38
12 oct. 2013 à 16:38
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
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
12 oct. 2013 à 16:53
12 oct. 2013 à 16:53
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 question
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
12 oct. 2013 à 17:01
12 oct. 2013 à 17:01
tu 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?
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
12 oct. 2013 à 17:10
12 oct. 2013 à 17:10
mais la je ne surcharge pas l'opérateur [] or ceci est demandé ...
Oo
Oo
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
12 oct. 2013 à 17:13
12 oct. 2013 à 17:13
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é
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
12 oct. 2013 à 17:15
12 oct. 2013 à 17:15
un opérateur[] qui retourne x , y ou z selon son argument .. !!
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
12 oct. 2013 à 17:24
12 oct. 2013 à 17:24
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"
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
12 oct. 2013 à 17:31
12 oct. 2013 à 17:31
ouiiiii je sais bien !! : )
et j'apprécie vraiment ton attention et ton aide !!
c'est gentil
et j'apprécie vraiment ton attention et ton aide !!
c'est gentil
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
12 oct. 2013 à 17:46
12 oct. 2013 à 17:46
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.
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
13 oct. 2013 à 12:10
13 oct. 2013 à 12:10
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;
}
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
13 oct. 2013 à 12:57
13 oct. 2013 à 12:57
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 !!
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
13 oct. 2013 à 13:09
13 oct. 2013 à 13:09
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
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
13 oct. 2013 à 13:23
13 oct. 2013 à 13:23
je l'ai réglé ce soucis lol
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
13 oct. 2013 à 13:43
13 oct. 2013 à 13:43
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
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
13 oct. 2013 à 15:56
13 oct. 2013 à 15:56
position est de type Vecteur3D. As-tu redéfini l'opérateur [] dans la classe Vecteur3D?
marlinne
Messages postés
20
Date d'inscription
mardi 5 juin 2012
Statut
Membre
Dernière intervention
13 octobre 2013
13 oct. 2013 à 16:07
13 oct. 2013 à 16:07
ouiii