Erreur compilation

Bonjour,

en fait j'ai défini un opérateur comme fonction amie d'une classe comme ceci :
.h
friend Vecteur3D operator+( const Vecteur3D& , const Vecteur3D& );

.cpp
Vecteur3D operator+(const Vecteur3D& v1, const Vecteur3D& v2){
Vecteur3D v3;
v3.x = v1.x + v2.x;
v3.y = v1.y + v2.y;
v3.z = v1.z + v2.z;
return v3;
}
et on me dit : [Error] C:\Program Files\C-Free Standard\samples\TP5_C++\Vecteur3D.cpp:31: 'Vecteur3D::operator +(const Vecteur3D &, const Vecteur3D &)' must take either zero or one argument

ce n'est pas logique tout ca ...quelqu'un pourrait m'aider ?!
Merci d'avance ..

1 réponse

  1. Salut,

    Souvent ce genre d'erreur est due au fait que tu déclares ta fonction comme une fonction membre de ta classe. Je m'explique :
    L'erreur est que tu essaies de définir un membre
    operator+
    prenant 2 arguments ce qui signifie qu'elle en prends 3 car tu as le paramètre implicite this. Une une fonction amie n'est pas une fonction membre de ta class.

    @++

    SD