Bonjour,
J'essaie déséspéremment de créer une petite classe pour me familiariser avec les templates. Non sans mal j'ai obtenu un résultat pas mal jusqu'à ce que j'essaie de surcharger un opérateur.
Voici le code que j'utilise :
#pragma once
#include "StdAfx.h"
using namespace std;
template <class T>
class Point
{
T x;
T y;
public:
Point(void);
~Point(void);
void affich();
void set(T, T);
friend ostream& operator<<(ostream &, const Point<T> &);
};
template <class T> Point<T>::Point(void)
{
std::cout << "on entre dans le constructeur" << std::endl;
}
template <class T> Point<T>::~Point(void)
{
std::cout << "on entre dans le destructeur" << std::endl;
}
template <class T> void Point<T>::affich()
{
std::cout << "On affiche " << this->x << ", " << this->y << std::endl;
}
template <class T> void Point<T>::set(T x, T y)
{
this->x = x;
this->y = y;
}
template <class T> ostream& operator<<(ostream &os, const Point<T> &p)
{
os << "affichage" << std::endl;
return os;
}
Et là Visual Studio me donne l'erreur suivante quand j'utilise cet opérateur :
Error 1 error LNK2001: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Point<double> const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABV?$Point@N@@@Z) Test_Template.obj
J'éspère qu'il ne s'agit pas d'une erreur stupide...

Merci beaucoup de votre aide