Aller au contenu

[RESOLU]C++ Problème de redéfinition d'un opérateu


serik

Messages recommandés

Posté(e)

Salut

Voilà le code :

Matrix4.cpp
Vector3D Matrix4::operator*(const Vector3D& v){
return Vector3D(m[0][0]*v.getX() + m[0][1]*v.getY() + m[0][2]*v.getZ(),
				m[1][0]*v.getX() + m[1][1]*v.getY() + m[1][2]*v.getZ(),
				m[2][0]*v.getX() + m[2][1]*v.getY() + m[2][2]*v.getZ());
}

-----------------------
Vector3D.hpp:
inline float getX(){return values[V3D_x];}
inline float getY(){return values[V3D_y];}
inline float getZ(){return values[V3D_z];}

Si j'enlève le const, ça compile. Sinon "error: passing 'const Vector3D ' as `this' argument of `float Vector3D::getX()' discards qualifiers".

Est-ce parce que j'appelle une fonction sur un paramètre constant?

Si oui, comment je peux faire pour définir ma méthode en gardant le caractère constant de Vector3D?

Merci.

Posté(e)

Vector3D.hpp:
inline float getX() const {return values[V3D_x];}
inline float getY() const {return values[V3D_y];}
inline float getZ() const {return values[V3D_z];} 

N'engage que moi :vomi2:

D'ailleurs, je serais toi, je rajouterais des const un peu partout, il en vaut mieux plus que pas assez.

Vector3D.hpp:
inline const float getX() const {return values[V3D_x];}
inline const float getY() const {return values[V3D_y];}
inline const float getZ() const {return values[V3D_z];} 

Posté(e)

Spaz001 a raison.

Tu utilises un const Vector3D& v

v est donc constant. Tu dois appeler les méthodes constantes de cet objet. donc getX() & co doivent être constantes.

D'où le

inline float getX() const {return values[V3D_x];}

Ensuite, tu peux aussi retourner un float constant... rien ne t'en empêche.... mais ce n'est pas primordial.

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...