Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1887 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  template, main, visual C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

template, main, visual C++

n°554605
bobmorton
Posté le 30-10-2003 à 15:58:33  profilanswer
 

Voila j'ai un main.cpp tout ce qu'il y a de plus simple :

Code :
  1. #include <iostream.h>
  2. #include "Element.h"
  3. int main(){
  4. Element<int> e1(3);
  5. return 0;
  6. }


je fais la classe élément en séparant  .h et  .cpp, ca plante lors de l'édition de lien(quand je fais "build" sous visual C++) :  
fichier : Element.h

Code :
  1. template<class T>
  2. class Element{
  3.   public:
  4. T valeur;
  5. Element<T>* ptr_succ;
  6. Element<T>* ptr_pred;
  7. Element(T val, Element<T>* succ = NULL, Element<T>* pred = NULL);
  8. virtual ~Element();
  9. };


 
fichier : Element.cpp

Code :
  1. template<class T> Element<T>::~Element(){
  2. delete ptr_succ;
  3. delete ptr_pred;
  4. }
  5. template<class T>
  6. Element<T>::Element(T val, Element<T>* succ, Element<T>* pred):valeur(val),ptr_succ(succ),ptr_pred(pred){};


En revanche si j'inclue le main dans le .cpp ca marche et je comprend pas pourquoi?
 
Message d'erreur :  
Linking...
main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall Element<int>::~Element<int>(void)" (??1?$Element@H@@UAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall Element<int>::Element<int>(int,class Element<int> *,class Element<int> *)" (??0?$Element@H@@QAE@HPAV0@0@Z)
Debug/TP05_Ensemble.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

 

mood
Publicité
Posté le 30-10-2003 à 15:58:33  profilanswer
 

n°554727
theshockwa​ve
I work at a firm named Koslow
Posté le 30-10-2003 à 17:04:51  profilanswer
 

met tout ce qui est dans ton element.cpp dans ton element.h, à la suite de ce qui constitue réellement le header ...

n°554756
bobmorton
Posté le 30-10-2003 à 17:18:52  profilanswer
 

theShOcKwAvE a écrit :

met tout ce qui est dans ton element.cpp dans ton element.h, à la suite de ce qui constitue réellement le header ...


Pourquoi? c'est pas possible de séparer code source et header dans le cas des templates? merci en tout cas @+

n°554869
theshockwa​ve
I work at a firm named Koslow
Posté le 30-10-2003 à 19:38:36  profilanswer
 

hum ... D'autres personnes y répondraient sans doute mieux que moi ...
 
Mais pour l'instant, considère que ce n'est pas possible (simplement parce que la majeure partie des compilateurs ne gèrent pas l'export, je crois ...)

n°554933
Joel F
Real men use unique_ptr
Posté le 30-10-2003 à 21:29:20  profilanswer
 

pas possible pour l'insatnt.
export et tres mal géré par les compilo donc mets ton code template dans ton .h

n°554946
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-10-2003 à 21:38:05  profilanswer
 

Citation :

Catégorie : C++


bobmorton a écrit :


Code :
  1. #include <iostream.h>




[:meganne]


Message édité par Harkonnen le 30-10-2003 à 21:38:24

---------------
J'ai un string dans l'array (Paris Hilton)
n°554948
kadreg
profil: Utilisateur
Posté le 30-10-2003 à 21:39:38  profilanswer
 

Ca marche avec CC sous solaris :o
 
 
 
 
(bon, il exporte tout et crée un répertoire temporaire avec des conchoncetés dedans)


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°554951
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-10-2003 à 21:41:47  profilanswer
 

kadreg a écrit :

Ca marche avec CC sous solaris :o


il est de retour \o/


---------------
J'ai un string dans l'array (Paris Hilton)
n°554954
kadreg
profil: Utilisateur
Posté le 30-10-2003 à 21:44:01  profilanswer
 

Harkonnen a écrit :


il est de retour \o/


 
 
Commentaire hors sujet, [:ban]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°555150
bobmorton
Posté le 31-10-2003 à 09:27:26  profilanswer
 

Harkonnen a écrit :

Citation :

Catégorie : C++


 
[:meganne]


certes, c'est parce que j'ai simplifier le code avant de poster. Merci bien en tout cas, et j'en place une pour ces profs sympathiques qui te disent "si si c'est possible l'erreur est ailleurs"...


Message édité par bobmorton le 31-10-2003 à 14:04:27
mood
Publicité
Posté le 31-10-2003 à 09:27:26  profilanswer
 

n°555446
SoWhatIn22
Posté le 31-10-2003 à 13:44:31  profilanswer
 

bobmorton a écrit :


certes, c'est parce que j'ai simplifier le code avant de poster. Merci bien en tout cas, et j'en place une pour ces putains de profs qui te disent "si si c'est possible l'erreur est ailleurs"...


 
si, c'est possible.
A la fin de ton .h dans lequel tu déclares ton template, tu inclues ton .cpp qui contient l'implémentation (#include "machin.cpp" )
 
Ca permet, pour ceux qui le souhaitent, de garder la séparation fonctionnelle entre les fichiers .h (header) et .cpp (implémentation).
 
Element.h:

Code :
  1. #ifndef TEMPLATE_ELEMENT_H
  2. template<class T> class Element
  3. {
  4.     // ... bla bla bla ...
  5. };
  6. #include "Element.cpp"
  7. #endif


 
 

Citation :

ces putains de profs


Etre vulgaire n'est ni une obligation ni une fatalité. Tu dois pouvoir t'en sortir.
 
 

n°555452
chrisbk
-
Posté le 31-10-2003 à 13:49:41  profilanswer
 

Joel F a écrit :

pas possible pour l'insatnt.
export et tres mal géré par les compilo donc mets ton code template dans ton .h

*
 
recherche google sur "why we can't afford export" pour plus d'info sur pkoi non seulement c'est mal géré mais en plus pkoi ca ne sera surement jamais géré :D

n°556489
Joel F
Real men use unique_ptr
Posté le 01-11-2003 à 21:42:56  profilanswer
 

je sais deja lu :p


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  template, main, visual C++

 

Sujets relatifs
Mon prog ne rend plus la main[c/c++] Afficher une image avec plus de 16-256 couleurs sous Visual
[vc++]contenu de l'installation de visual studio![vba autocad] fenetre ancrable et laisser la main a l'utilisateur
SQL besoin d'un coup de main sur une requete svp (och).Vous connaissez Visual SourceSafe? Si oui, vous connaissez mieux?
[interrogation écrite] fonction membre template virtuelleCherche Visual Basic 4,5,ou 6 avec licence
Récupérer les infos ou sauvegarder une main framevisual object cobol (visoc) ou le trouver ??
Plus de sujets relatifs à : template, main, visual C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR