Surdéfinition d'opérateur et constantes

neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008 - 9 janv. 2006 à 16:23
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008 - 10 janv. 2006 à 06:41
Bonjour tout le monde!



J'ai écrit une classe CVector3 dans laquelle j'ai redéfini plusieurs
opérateurs. Cela fonctionne correctement excepté lorsque je tente
d'effectuer des opérations sur des constantes, voici un exemple
d'opérateur qui me pose problème:



<hr size= "2" width="100%">/*

* Opérateur *

*

* Multipli la norme du vecteur par un réel

*/

CVector3 CVector3:: operator *(float lambda)

{

return CVector3(x*lambda, y*lambda, z*lambda);

}

<hr size ="2" width="100%">

Le message d'erreur du compilateur est:

cglcore.cpp:55: error: passing ‘const CVector3’ as ‘this’ argument of ‘CVector3 CVector3::operator*(float)’ discards qualifiers



J'ai déjà eu un problème similaire, je ne pouvai pas faire certains
calculs en une seule ligne. Je pense que ça viend du passage de
parmètres mais je ne sais pas du tout comment résoudre ce problème.
Quelqu'un a-t-il une solution ?

neodelphi

2 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
9 janv. 2006 à 17:17
Rajoutes juste un "const"



CVector3 CVector3::operator*(float lambda) const
{
return CVector3(x*lambda, y*lambda, z*lambda);
}



Mais pour etre plus propre normalement, cet opérateur c'est:



CVertor3 operator * (float _lambda, const CVertex3 & _which)

{
return CVector3(_which.x*lambda, _which.y*lambda, _which.z*lambda);
}
0
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
10 janv. 2006 à 06:41
Ok Ok il faut que j'essaye ça alors... Merci pour ta réponse.

neodelphi
0
Rejoignez-nous