Compilation de template... (débutant) - C++ - Programmation
Marsh Posté le 06-03-2007 à 21:16:22
Essaye
Code :
|
Marsh Posté le 06-03-2007 à 21:37:16
Merci ça me vire mon erreur !
La question maintenant c'est pourquoi...
Par contre j'ai toujours une erreur, mais cette fois du linker...
/tmp/ccakIuFz.o: In function `eval(Echiquier& )': |
Alors que le constructeur est bien défini dans le fichier hash_table.cpp :
Code :
|
Tout comme les autres fonctions membres, le fichier d'en-tête est inclu dans le fichier .cpp correspondant, et le fichier source est dans le même repertoire...
Je crois que le C++ c'est pas fait pour moi...
Marsh Posté le 06-03-2007 à 22:12:11
les template se définissent uniquement dans les .h ...
Lire les bases aideraient bien
http://c.developpez.com/faq/cpp/?page=templates
Marsh Posté le 06-03-2007 à 22:14:38
ReplyMarsh Posté le 06-03-2007 à 22:15:01
fashiongwen a écrit : BJR, je suis a la recherche d'une personne qui connaitrais bien html |
Le rapport avec la choucroute ?
Marsh Posté le 06-03-2007 à 22:16:56
j'ai commencé a faire mon site, et je voudrais qu'on maide pour la section portfolio
Marsh Posté le 06-03-2007 à 22:21:06
tu as vu le titre du topic ? on aprle d'HTML ? non. Donc poste un nouveau sujet
Marsh Posté le 06-03-2007 à 22:22:36
Joel F a écrit : les template se définissent uniquement dans les .h ... |
Merci pour ces réponses, je pensais bêtement qu'il n'y avais pas raisons que ça change pour les classes templates...
Marsh Posté le 06-03-2007 à 23:33:22
Joel F a écrit : les template se définissent uniquement dans les .h ... |
C'est simplifié. Les définitions des classes templates oui, uniquement. La définition de tout ce qui peut-être candidat à la résolution de surcharge (les fonctions quoi) n'est pas obligatoirement inclu dans un header.
Marsh Posté le 07-03-2007 à 12:16:42
++fab a écrit : C'est simplifié. Les définitions des classes templates oui, uniquement. La définition de tout ce qui peut-être candidat à la résolution de surcharge (les fonctions quoi) n'est pas obligatoirement inclu dans un header. |
tu es en train d eme dire que tu peut mettre le corps d'une fonction tempalte dans un .cpp o_O ?
Marsh Posté le 07-03-2007 à 19:34:28
Joel F a écrit : tu es en train de me dire que tu peux mettre le corps d'une fonction template dans un .cpp o_O ? |
Oui.
Pronostic sur le diagnostic du compilateur sur la TU suivante ?
Code :
|
Voir §14.8.3.6, que je connais par coeur pour m'être déjà ridiculisé dessus
Marsh Posté le 07-03-2007 à 22:05:44
nan mais t'as le droit d'instancier à la main, on dit pas.
Marsh Posté le 07-03-2007 à 22:37:53
ReplyMarsh Posté le 07-03-2007 à 22:43:01
Citation : nan mais t'as le droit d'instancier à la main, on dit pas. |
à la main, ou pas. La norme dit que le code ci-dessus est légal si est présent dans le programme une instanciation de f<int>, qu'elle soit implicite ou explicite.
J'ai passé sous silence export, vu que le PO utilise GCC/g++.
Et j'espère que la tendance à mettre tout le code dans les headers va aller decrescendo.
Marsh Posté le 07-03-2007 à 23:51:59
MiniMoi51 a écrit : Bonjour, |
A tout hasard, tu as à ta disposition std::tr1::unordered_map, qui est une table de hachage, utilisable sur ton compilateur.
Marsh Posté le 06-03-2007 à 21:01:12
Bonjour,
Je suis en train de développer une petite IA d'échecs en C++, et pour les besoins du programme, je veux utiliser une table de hachage, pour l'instant assez simple. Pour cela, comme std::map ne me convient pas (structure d'arbre binaire en interne), je me fait une petite classe template moi-même. Seulement j'ai une erreur à la compilation que je ne comprends pas...
Le code en question est :
avec
comme membre privé de la classe.
Le message renvoyé par g++ (4.1.2) à la compilation est :
hash_table.cpp: In member function bool hash_table<Key, Value>::find_key(Key, Value& ):
hash_table.cpp:31: error: expected `;' before it
hash_table.cpp:33: error: it was not declared in this scope
Pouvez-vous m'éclairer sur ceci ?
Merci d'avance