voici mon fichier de déclaration
#include <iostream.h>
#include <stdlib.h>
template <class T> class Pile
{
int n_elem;
int *adresse;
int nb_element_courant;
public :
Pile(int n); // constructeur I
Pile(Pile &); // constructeur de recopie III
~Pile(); // destructeur
//Opérateurs unaires
int operator ++();
int operator --();
//Opérateurs binaires
Pile & operator =(Pile &); // opérateur d'affectation (=)
Pile & operator << (T t);
Pile & operator >> (T &t);
friend ostream& operator << (ostream &,Pile<T> &);
};
mon fichier de définition
....
template <class T> ostream& operator << (ostream &io,Pile<T> &p)
{
io << "<* ";
for(int i=p.nb_element_courant;i>=0;i--)
io << p.adresse[i] << " ";
io << " *>";
return io;
}
et mon main
#include "definition.h"
int main()
{
Pile <int> pile(5);
pile << 3 << 4 << 1;
cout <<"la pile : "<<pile;
return 1;
}
Et à la compilation,j'ai une erreur de linkage

qui raconte
undefined reference to 'operator << (std: ostream&,Pile<int>)
Merci d'avance pour toute vos idées ;) !