problème de compilation avec des templates [DevC++] - C++ - Programmation
Marsh Posté le 16-11-2004 à 20:41:43
Pour l'instant, il faut mettre l'implémentation des fonctions templates dans le .h, pour qu'elle soit visible par le code qui l'utilise en l'instanciant.
Un jour, peut-être, tous les compilos C++ du monde auront des librairies de templates, et on pourra faire du générique comme en ADA...
Marsh Posté le 16-11-2004 à 20:42:54
_TEST_H
t'as pas plus unique comme identifiant ?
pour les template, il faut utiliser le modèle de l'inclusion. Donc ne fait pas de .cpp associer, fout tout dans le .hpp
Marsh Posté le 16-11-2004 à 20:42:59
ReplyMarsh Posté le 16-11-2004 à 20:52:04
merci pour ce lien Lam's, mais j'ai juste essayer de router "export" devant un template, et ca ma mis :
test.h:3: warning: keyword 'export' not implemented and will be ignored
Je suis donc sensé tout mettre dans un seul fichier.
Taz> qd tu dit "modèle de l'inclusion" ca veut dire quoi concretement, je mets pas de directive particulière dans le fichier .hpp et je fais direct le include "test.hpp" dans le main.cpp c bien ca?
Marsh Posté le 16-11-2004 à 20:55:08
Nico5779 a écrit : test.h:3: warning: keyword 'export' not implemented and will be ignored |
Bah oui, y a que des grosses boites comme EDG (3 personnes en tout, et le front-end est codé en C) qui peuvent se permettre de passer leur temps à implémenter toute la norme.
Le front-end d'EDG est utilisé par le compilateur Comeau, mais aussi par le compilo d'Intel entre autres. Il paraitrait que export serait au programme de l'équipe de Visual C++...
Marsh Posté le 16-11-2004 à 20:59:58
oki merci.
Lams> c pas de bol, je compte n'utiliser que g++
Marsh Posté le 16-11-2004 à 21:25:23
y a pas de quoi en faire un fromage. g++ fonctionne bien, et export n'est pas essentiel et souvent controversé
Marsh Posté le 16-11-2004 à 22:48:58
On peut faire #include<test.cpp> également... histoire de conserver ses deux fichiers ?
Marsh Posté le 16-11-2004 à 23:09:05
c'est moche. à ce moment là, certains utilise une extension .tpp pour pas prêter à confusion.
Marsh Posté le 18-11-2004 à 13:26:39
Lam's a écrit : Pour l'instant, il faut mettre l'implémentation des fonctions templates dans le .h, pour qu'elle soit visible par le code qui l'utilise en l'instanciant. |
Ouep c'est ça, pb classique unix...
Marsh Posté le 18-11-2004 à 13:28:11
xterminhate a écrit : On peut faire #include<test.cpp> également... histoire de conserver ses deux fichiers ? |
Oui tout à fait. Moi je bosse sur des applis multi-platforme, et on a des jolis #ifdef pour faire une inclusion conditionnel de l'implémentation des template quand on est sous unix.
Marsh Posté le 16-11-2004 à 20:33:33
Bonjour,
je voudrais compiler un simple programme en c++, mais je m'y perd dans la gestion des fichiers.
Voici un exemple simplifié:
J'ai 3 fichiers:
main.cpp
puis test.h
puis test.cpp:
Et j'obtiens a la compil:
Compilateur: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Exécution de make clean
rm -f main.o test.o Projet1.exe
g++.exe -c main.cpp -o main.o
g++.exe -c test.cpp -o test.o
g++.exe main.o test.o -o "Projet1.exe" -L"C:/map/Dev-Cpp/lib"
main.o(.text+0x1b):main.cpp: undefined reference to `Test<int>::brol(void)'
make.exe: *** [Projet1.exe] Error 1
Exécution terminée
Or, si j'utilise pas de template, ca marche, et si je fais include "test.cpp" dans main.cpp ca marche aussi, comment suis je sensé procédé pour que ca soit valide?
merci d'avance
Message édité par Nico5779 le 16-11-2004 à 20:34:46