Bonjour a tous,

le contexte :
Je débute avec la notion de templates.
pour m'exercer j'essaie de réaliser une arborescence de classe 'multi-objet' de type :
pile>file>liste
Pour commencer je créer une classe 'cellule' qui sera réutilisé par toutes mes classe.

seulement mon compilo ne veut pas mon code :
element.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef ELEMENT_H_INCLUDED
#define ELEMENT_H_INCLUDED
 
 
template <class T> class cellule{
 
    public :
    T objet;
    cellule * lien_p;
 
    //constructeur
    cellule<T>();
    cellule<T>(T objet,cellule<T> * lien_p);
 
    //destructeur
    ~cellule<T>();
};
 
#endif // ELEMENT_H_INCLUDED
element.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "element.h"
#include <iostream>
 
//constructeurs
template <class T>
cellule<T>::cellule<T>()
{
  lien_p=NULL;
};
 
 
template <class T>
cellule<T>::cellule<T>(T objet,cellule<T> * lien_p)
{
};
 
template <class T>
cellule<T>::~cellule(){
    free(objet);
};

les erreurs retourné par mon compilo (code::block)
undefined reference to `cellule<int>::cellule() (pour la ligne "cellule<int> test1; de mon main)
undefined reference to `cellule<int>::~cellule() (pour la fin de mon code

Par contre quand je supprime la déclaration (et deffinition) des constructeurs et destructeur je n'ai plus d'erreur.

Je suis passé a coté de quelque chose pour cette notions ou j'ai tous simplement foiré mes définitions?

Merci d'avance pour vos aides.