ricklekebekoi
Messages postés303Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention24 avril 2009
-
27 sept. 2007 à 22:01
cs_exar
Messages postés286Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention22 avril 2012
-
27 févr. 2008 à 15:09
Bonjour,
Premiere utilisation des templates, et je frappe un mur .... dites moi ce que j'ai pas compris :
En gros j'ai une classe générique symbole<T>
Et j'ai une classe operande qui hérite de symbole<double>
Erreur 1 error LNK2019: symbole externe non résolu "public: __thiscall symbole<double>::symbole<double>(void)" ([mailto:??0?$symbole@N@@QAE@XZ ??0?$symbole@N@@QAE@XZ]) référencé dans la fonction "public: __thiscall operande::operande(void)" ([mailto:??0operande@@QAE@XZ ??0operande@@QAE@XZ]) operande.obj
symbole.h
#ifndef _SYMBOLE_
#define _SYMBOLE_
template <class T>
class symbole
{
private:
T valeur;
public:
symbole();
symbole(T val);
~symbole();
};
#endif
symbole.cpp
#include "symbole.h"
template <class T>
symbole<T>::symbole()
{
}
template <class T>
symbole<T>::symbole(T val)
{
}
template <class T>
symbole<T>::~symbole()
{
}
operande.h
#ifndef _OPERANDE_
#define _OPERANDE_
#include "symbole.h"
class operande : public symbole<double>
{
public:
operande();
~operande();
};
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 28 sept. 2007 à 11:10
Une classe template n'est pas du code pure. Le template n'est pas compilé, c'est juste un modèle. Donc c'est normal qu'on puisse pas le mettre dans un fichier .cpp puisqu'une classe template n'existe pas tant qu'on a pas fourni de type.