Probleme de compilation avec les templates

Probleme de compilation avec les templates - C++ - Programmation

Marsh Posté le 17-06-2002 à 14:38:40    

j'utilise visual.net.
 
j'ai fait une classe en utilisant les templates
 
et quand j'utilise la classe en question g une erreur lors de l'edition des liens.
 
voici a quoi ressemble le code
de la class:
 
template<class TypeVal>
maClass<TypeVal>::maClass(TypeVal v){
  val = v;
}
 
 
de la fonction main:
maClass<int> *m = new maClass<int>(v);
 
l'erreur:
 
test error LNK2019: symbole externe non résolu "public: __thiscall maClass<int>::maClass<int>(int)" (??0?$maClass@H@@QAE@H@Z) référencé dans la fonction _main

Reply

Marsh Posté le 17-06-2002 à 14:38:40   

Reply

Marsh Posté le 17-06-2002 à 15:05:15    

Il est bizard le code de ta classe.
 
J'aurais plutôt vu un truc du genre:

Code :
  1. template<class T> MaClasse
  2. {
  3.   public:
  4.            MaClasse(T v) : valeur(v){} //ou MaClasse(T v)
  5.                                        //    {
  6.                                        //      valeur = v;
  7.                                        //    }
  8.   private:
  9.            T valeur;
  10. };


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 16:11:14    

oui dans le .h c'est comme ça la c'est un extrait du .cpp

Reply

Marsh Posté le 17-06-2002 à 16:17:55    

Ben voilà, pas de cpp avec les template, tu met tout dans le .h


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 16:19:42    

merci
 
c quand meme bizarre a la fac nous appris a faire un .c
je pige plus :heink:

Reply

Marsh Posté le 17-06-2002 à 16:27:52    

C le cas particulier tu template.
 
Chaque fois que tu instencie une classe ou une fonction template le compilo crée un nouveau bout de code puis le compile, il ne peut donc pas y avoir de cpp car il est impossible de précompiler des template. C'est clair ou pas? Non par ce que j'ai un peu de mal à m'expliquer clairement là, je le sent :D


Message édité par LetoII le 17-06-2002 à 16:28:10

---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 16:36:54    

j'ai compris le truc j'ai arrangé le probleme grace a toi  :jap:  
 
c'est juste que j'ai ressorti un bout de code qu'un prof m'avait passé quand j'était à la fac et y'a un .h et un .cc c'est surtout ça qui me perturbe.(c'etait du c et pas du c++ et en plus sous linux)
 
encore merci pour ton aide. :)

Reply

Marsh Posté le 17-06-2002 à 16:53:28    

De rien


---------------
Le Tyran
Reply

Marsh Posté le 18-06-2002 à 00:25:02    

Les templates pourront être mis dans un source compilable quand le mot-clé export sera reconnu.
 
En attendant, c'est dans l'en-tête...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 18-06-2002 à 00:42:37    

Certains compilateur supportent la compilation séparé de templates (notamment xlC, avec une sombre histoire de .ptrepository) .
 
Personnellement, je met implémentation et interface dans des fichiers différents, mais je mais un  
 
#include "implementation.cpp"  
 
à la fin du .h pour garder le fait de séparer interface et implémentation, comme les autres classes.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 18-06-2002 à 00:42:37   

Reply

Marsh Posté le 18-06-2002 à 11:03:29    

c toujour bon à savoir merci pour ces infos :)

Reply

Marsh Posté le 03-07-2002 à 04:33:13    

Effectivement, j'ai appris qu'il existe des compilateurs supportant export.
Là: http://forum.hardware.fr/forum2.php3?post=22133&cat=10


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed