|
Dernière réponse | |
---|---|
Sujet : [C++] Très Urgent !!! Question de vie ou de ... | |
Amadeus | C vrai c elegant les templates et en plus c de l'open source de fait :) |
Aperçu |
---|
Vue Rapide de la discussion |
---|
Amadeus | C vrai c elegant les templates et en plus c de l'open source de fait :) |
minusplus | ah ok, il a pas tout fait d'un bloc !
|
kadreg |
[edit]--Message édité par kadreg--[/edit] |
Amadeus | Pour preciser encore plus, s'il veut faire simple, il doit copier le contenu de son tableau.cc ds tableau.h et virer tableau.cc du projet. [edit]--Message édité par Amadeus--[/edit] |
Amadeus | Ben non ila compile les templates dans un fichier a part et il na garde ds le header que les decl, ensuite il veut linker les deux alors que le compilo (avant le linker) a besoin de connaitre le type des templates.
PS : c aussi un pb des templ c que tu peu pas par ex fournir une lib de templ avec un header qui contient juste les decl, enfin pas de maniere triviale
[edit]--Message édité par Amadeus--[/edit] |
minusplus | je comprends pas où est son problème ?
Les templates sont déclarés dans tableau.h qui est inclus dans tableau.cc et main.cc, non ? Et ben si il compile sans 'external-templates', ça devrait marcher ? |
Amadeus | Ouais. Mais pour pas faire compilqué le mieux c de regrouper ttes les templates (les definitions) dans un header et l'include ds chaque fichier qui les utilise. Le code sera un peu plus gros mais bon qui s'en soucie aujourdhui :)
|
minusplus | C'est de ça que vous parlez ?
|
Amadeus | Tu ne peux pas faire une compilation separée de templates : ton header doit contenir les definitions et donc le source de tes templates. c'est pour une raison tres simple : le compilo doit connaite le type au moment de la compilation. |
esseki | J'ai un très gros problème assez compliqué, je vais essayer d'être le plus clair possible.
J'ai un programme développé sur plusieurs fichiers (j'utilise "make" pour l'édition des liens et obtenir l'exécutable). Dans ce programme j'ai 2 fichiers ("tableau.h" comme fichier d'en-tête et "tableau.cc" pour le code des fonctions). Dans "tableau.h" j'ai déclaré une classe générique "tableau" (utilisation de template). Lorsque je compile tout se déroule normalement (j'ai pris des précautions pour la compilation séparée des class template avec gcc.) Lorsque dans mon fichier "main.cc" (celui qui contient le main() ) je fais une instanciation pour ma class "tableau" avec le type "int" par exemple, tout se compile sans problème. Lorsque dans mon main() je fais appel à une fonction membre de ma class "tableau" dont le code se trouve dans le fichier d'en-tête "tableau.h" car il est suffisamment cours, tout se passe sans problème. Par contre lorsque je fait appel à une fonction membre dont seule l'en-tête a été codée dans "tableau.h" et le corps dans "tableau.cc" (compilation séparée donc), le compilateur me répond qu'il ne peut pas trouver la fonction en question. J'en conclu que mon fichier "tableau.cc" n'est pas correctement construit. J'en fais donc appel à votre "bon coeur", si vous avez une solution ou un site internet qui traiterait de "class template et compilation séparée" je suis preneur. Dernière précision : comme vous l'aurez compris, je suis très pressé aussi, le plus vite sera le mieux. Merci d'avance. |