Bonjour,
A la compilation de mon programme, j'obtiens ce message :
g++ -o exemples.o -c exemples.cc -W -Wall -g exemples.cc:7: erreur: redefinition of ‘Exemple<T>::Exemple()’ exemples.tpp:4: erreur: ‘Exemple<T>::Exemple()’ previously declared here make: *** [exemples.o] Erreur 1
Que faut-il que je modifie ou ajoute pour que mon programme fonctionne?
Merci
Voici les différents fichier et le Makefile
// exemple.hh #ifndef EXEMPLE_HH #define EXEMPLE_HH template <typename T> class Exemple { public: Exemple(); }; #include "exemples.tpp" #endif
// exemple.tpp template <typename T> Exemple<T>::Exemple() { }
//exemples.cc #include <iostream> #include "exemples.hh" template <typename T> Exemple<T>::Exemple(){ std::cout << "ceci est un exemple" << std::endl; } int main(){ Exemple<int> ex; return 0; }
CC=g++ CFLAGS=-W -Wall -g LDFLAGS=-W -Wall -g EXEC=exo all: $(EXEC) exo: exemples.o $(CC) -o exo exemples.o $(LDFLAGS) exemples.o: exemples.cc $(CC) -o exemples.o -c exemples.cc $(CFLAGS) clean: rm -rf *.o mrproper: clean rm -rf $(EXEC)