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
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 #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
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.
Partager