Pb avec template et surcharge

Résolu
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 19 déc. 2004 à 22:00
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 20 déc. 2004 à 10:32
Je veux créer une classe vecteur dont le type des vecteurs peut varié. Et je cherche à surcharger l'opérateur << . Quand je supprime la notion de template et que je remplace par un type bien défini, il n'y a pas de problème, mais avec template, est-ce que quelqu'un pourrait m'indiquer ou est l'erreur :)

//maths.cpp

#include
#include "maths.h"

template <class TYPE>
inline std::ostream & operator<<(std::ostream & chaine, const vector3D<TYPE> & vect)
{
chaine << "(" << vect.x << "," << vect.y << "," << vect.z << "\n";
return chaine;
}

// la classe vector3D :

//maths.h

template <class TYPE>
class vector3D
{
private:
unsigned int used;

public:
TYPE x,y,z;

vector3D(...)...; // je détaille pas
vector3D(const vector3D & vect_source);
~vector3D() {}

void set(const TYPE cx, const TYPE cy, const TYPE cz);

};

template <class TYPE>
inline std::ostream & operator<<( std::ostream & chaine, const vector3D<TYPE> & vect);

Merci d'avance

2 réponses

plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
20 déc. 2004 à 04:43
salut,

définition de operator<< dans le header.
La norme prévoit l'utilisation du mot clé export pour permettre de séparer définition et déclaration, mais quasiment aucun compilo ne l'implémente. Donc tout dans le header avec les template (d'autant plus que tu veux l'inliner !)
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 déc. 2004 à 10:32
A oui en effet, quand je le mets dans la class, ca marche correctement.
Merci bcp !

mais c'est pénible de pas pouvoir définir l'opérateur ailleurs.
0
Rejoignez-nous