Pb avec template et surcharge [Résolu]

Signaler
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
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

Messages postés
232
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
8 janvier 2005

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 !)
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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.