Template et operator= (c++)

Crownless00 Messages postés 5 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 22 mai 2010 - 16 déc. 2008 à 21:39
Gtijani Messages postés 1 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 28 décembre 2008 - 28 déc. 2008 à 10:05
J'ai la classe template suivante :

template <class Type>
class Point3D
{

public :
    Point3D(Type posX, Type posY, Type posZ) {...}    Point3D() {x 0; y 0; z = 0;}

    Point3D<Type>& operator=(const Point3D<Type>&) { ??? }

    ...
private :
    Type    x, y, z;
};

Comment surcharger :
Point3D<Type>& operator= (const Point3D<Type>&)

Pour pouvoir écrire : Point3D<float> point = Point3D(...,...,...);
Sans avoir à la compilation : erreur: conversion from ‘Point3D’ to non-scalar type ‘Point3D<float>’ requested

Merci.

3 réponses

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 déc. 2008 à 02:04
à mon avis, tu chercher à faire une conversion de types internes

(de float à int)

donc, l'usage de deux templates melés...

ton cas spécifique se coderai ainsi
 (cependant, la classe risque d'etre moins générique que prévu
mais ça ne devrait pas t'embéter outre mesure, à voir selon les besoins
)

Point3D<Type>& operator=(const Point3D&in)
{
x=(Type)in.x;

y=(Type)in.y;

z=(Type)in.z;

}

___________________________________________________________
Magicalement
Nono
0
Crownless00 Messages postés 5 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 22 mai 2010
17 déc. 2008 à 19:09
J'ai donc fait :

Point3D<Type> operator= (const Point3D<char> &p0)
{
Point3D<Type> p(Type(p0.x()),Type(p0.y()), Type(p0.z()));
return &v;
}
Avec tous les types de base : char, short, int, long, double, float, ...

Et j'ai quand même : erreur: conversion from 'Point3D' to non-scalar type 'Point3D<float>' requested ...
0
Gtijani Messages postés 1 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 28 décembre 2008
28 déc. 2008 à 10:05
Bonjour,

Regarde ce lien :

http://www.mip.sdu.dk/ipl98/

tu y trouveras un exemple et les source de CPoint2D et 3D !, dans le .h il y a un exemple pour surcharger les operator de cats

tij
0
Rejoignez-nous