#1 Le 20/02/2012, à 17:36
- Destroyers
[C++] TEMPLATE problème assez simple (RESOLU)
bonjour tout le monde.
mon problème est simple:
je fais un code qui fonctionne, puis je met du template, et sa marcha plus ! magique.
pourtant je n'arrive pas a voir où peut être le problème ...
merci de votre aide.
//main.cpp
#include "personnage.h"
int main()
{
personnage hero;
personnage mechant;
hero.attaquer<personnage>(mechant);
return 0;
}
//personnage.h
#ifndef PERSONNAGE
#define PERSONNAGE
#include"arme.h" //un fichier qui comporte la classe arme
class personnage
{
private:
int vie;
arme *gun;
public:
personnage();
~personnage();
template<typename ennemi> void attaquer(ennemi& cible);
};
#endif
//personnage.cpp
#include "personnage.h"
//CONSTRUCTEURS
personnage::personnage()
{
vie=100;
gun=new arme();
}
personnage::~personnage()
{
delete gun;
}
template<typename ennemi>
void personnage::attaquer(ennemi& cible)
{
cible.vie-=gun->getdegats(); //getdegats() retourne un simple entier
}
et voici l'erreur:
/tmp/ccaqYuW4.o: In function `main':
main.cpp:(.text.startup+0x91): undefined reference to `void personnage::attaquer<personnage>(personnage&)'
collect2: ld a retourné 1 code d'état d'exécution
merci de votre aide.
PS: pour ceux qui ce posent des questions, je met des templates car les instances de la classe personnage ne seront pas les seule qui pourront être attquées (il y a une classe orc, gnome, etc...)
Dernière modification par Destroyers (Le 20/02/2012, à 18:17)
Hors ligne
#2 Le 20/02/2012, à 18:05
- valAa
Re : [C++] TEMPLATE problème assez simple (RESOLU)
Hello,
La réponse ne serait pas là : http://cpp.developpez.com/faq/cpp/index … _templates ?
Hors ligne
#4 Le 20/02/2012, à 18:07
- valAa
Re : [C++] TEMPLATE problème assez simple (RESOLU)
Hors ligne
#5 Le 20/02/2012, à 18:17
- Destroyers
Re : [C++] TEMPLATE problème assez simple (RESOLU)
okééé
merci beaucoup
je savais bien que mon problème était simple
Hors ligne
#6 Le 20/02/2012, à 18:36
- Destroyers
Re : [C++] TEMPLATE problème assez simple (RESOLU)
on sais quand gcc sera capable de compiler les fonctions templates comme des fonctions normales ?
Hors ligne