Salut,
J'ai des fichiers qui focntionnent tres bien avec gcc et un makefile sous linux mais sous visual C++ rien a faire j'ai des blemes dans tous les sens.
Voici un exemple pris sur le net que j'ai modifié (#include "Maillon.cpp" a la fin de Maillon.h):
Maillon.h :
Code :
- pragma once
- template <typename T>
- class Maillon
- {
- T elem;
- Maillon *suivant;
- Maillon *precedent;
- public :
-
- Maillon();
- Maillon *LireSuivant ();
- Maillon *LirePrecedent ();
- T LireElem();
- void EcrireSuivant (Maillon *);
- void EcrirePrecedent (Maillon *);
- void EcrireElem (T);
- };
- #include "Maillon.cpp"
|
et Maillon.cpp :
Code :
- #include "Maillon.h"
- template <typename T>
- Maillon<T>::Maillon()
- {}
- template <typename T>
- Maillon<T>* Maillon<T> :: LireSuivant ()
- {return suivant;}
- template <typename T>
- Maillon<T>* Maillon<T>:: LirePrecedent ()
- {return precedent;}
- template <typename T>
- void Maillon<T> :: EcrireSuivant (Maillon *m)
- {suivant=m;}
- template <typename T>
- void Maillon<T> :: EcrirePrecedent (Maillon *m)
- {precedent=m;}
|
J'ai mis le fichier .cpp en : "Not Using Precompiled Headers"
et je me bouffe les erreurs :
d:\Projet GetInfo\src\test\Maillon.cpp(5): error C2995: 'Maillon<T>::Maillon(void)' : template function has already been defined
d:\Projet GetInfo\src\test\Maillon.cpp(9): error C2995: 'Maillon<T> *Maillon<T>::LireSuivant(void)' : template function has already been defined
d:\Projet GetInfo\src\test\Maillon.cpp(13): error C2995: 'Maillon<T> *Maillon<T>::LirePrecedent(void)' : template function has already been defined
d:\Projet GetInfo\src\test\Maillon.cpp(17): error C2995: 'void Maillon<T>::EcrireSuivant(Maillon<T> *)' : template function has already been defined
d:\Projet GetInfo\src\test\Maillon.cpp(21): error C2995: 'void Maillon<T>::EcrirePrecedent(Maillon<T> *)' : template function has already been defined
d:\Projet GetInfo\src\test\Maillon.cpp(25): error C2995: 'void Maillon<T>::EcrireElem(T)' : template function has already been defined
...
...
si je vire le include "Maillon.h" j'ai :
d:\Projet GetInfo\src\test\Maillon.cpp(3): error C2143: syntax error : missing ';' before '<'
d:\Projet GetInfo\src\test\Maillon.cpp(3): error C2501: 'Maillon' : missing storage-class or type specifiers
d:\Projet GetInfo\src\test\Maillon.cpp(3): error C2988: unrecognizable template declaration/definition
d:\Projet GetInfo\src\test\Maillon.cpp(8): error C2447: '{' : missing function header (old-style formal list?)
d:\Projet GetInfo\src\test\Maillon.cpp(7): error C2039: 'LireSuivant' : is not a member of 'operator``global namespace'''
d:\Projet GetInfo\src\test\Maillon.cpp(3): error C2059: syntax error : '<'
d:\Projet GetInfo\src\test\Maillon.cpp(8): error C2143: syntax error : missing ';' before '{'
...
...
Ca me soule, help me please
PS : je suis sous Visual studio .NET
Message édité par AsTro le 13-06-2005 à 16:04:26