Code :
- Coord_2D<type> & Coord_2D<type>::operator = ( const type &value )
- {
- if( this != &value )
- {
- x=value;
- y=value;
- }
- return *this;
- }
|
const type &value, sinon ça fait théoriquement une copie (par constructeur de recopie)
pas void et return *this, parce que sinon tu peux pas écrire a=b=c;
sur des types complexes, tester si this != &value pour éviter de détuire l'object par auto-digestion sans apéro. (pour du float/int ça devrait passer) là je te l'ai mis pour le principe
edit: pardon, j'avais pas vu que tu voulais initialiser les deux coordonnées et non définir l'opérateur d'assignement objet à objet
si tu définis un operator = ( quelquonque ), il faut ptet obligatoirement définir un opérateur d'assignement.
mais quand même Coord_2D<type> & Coord_2D<type>:: operator = ( const type &value )
(ou const type value )
---
pour lever l'ambiguité, ptet ne pas faire d'opérateur = ( const type value ), mais un constructeur explicite ( const type value ), et laisser le compilo optimiser l'assignement/construction dans le cas des " variable1=2 ";
ça évitera les collisions avec l'assignement.
Message édité par bjone le 15-07-2007 à 22:39:35