Ajouter un commentaire

fredericmazue

Dans exemple.cc tu as mis ça

template <typename T>
Exemple<T>::Exemple(){
std::cout << "ceci est un exemple" << std::endl;
} 

Pour le compilateur c'est pareil que que ce qu'il voit dans exemple.cpp (je mets exemple.cpp, parce que exemple.tpp me déplait ;) :) ) c'est à dire:

template <typename T>
Exemple<T>::Exemple()
{
}

Pour lui qu'il y ait std::cout dans l'un et pas dans l'autre ça ne change rien. Il voit une redéfinition du constructeur et il râle.

Remède:
- tu vires totalement la redéfinition de exemple.cpp
- dans exemple.cpp (pas .tpp :) ) tu mets

template <typename T>
Exemple<T>::Exemple(){
std::cout << "ceci est un exemple" << std::endl;
} 

C'est à dire qu'il y avait dans exemple.cpp
Et ça ira.
Maintenant une remarque.
Tu écris une classe générique qui ne fait rien de son type générique. Cela n'a pas grand sens. Je suppose que tu vas dire que tu t'entraînes. Mais dans ce cas je te propose de t'entraîner à sortir le type paramétré avec ton std::cout, plutôt que de sortir "ceci est un exemple" ;)

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 TTTTTT  III  PPPP    QQQ    N   N 
TT I P P Q Q NN N
TT I PPPP Q Q N N N
TT I P Q QQ N NN
TT III P QQQQ N N
Q