Bonjour, je suis en train d'essayer d'apprendre à utiliser les classes template sous VS2010.
J'ai le code suivant:
1 2 3 4 5 6 7 8 9 10
| template <typename T>
class MCODE_Data : public MCODE_Module
{
public:
MCODE_Data(MCODE_LogManager *_Log);
virtual ~MCODE_Data();
protected:
T *DataPtr;
} |
L'implémentation est:
1 2 3 4 5 6
| template <typename T>
MCODE_Data<T>::MCODE_Data(MCODE_LogManager *_Log)
{
// CONSTRUCTOR
this->Log = _Log;
} |
Tout se compile bien pour ce projet (qui créée une librairie statique).
Dans un projet de test, j'utilise:
MCODE_Data<INT32> *MyData = new MCODE_Data<INT32>(Log);
qui me génère l'erreur suivante:
1>Dev_MultiCODEView.obj : error LNK2001: symbole externe non résolu "public: __thiscall MCODE_Data<int>::MCODE_Data<int>(class MCODE_LogManager *)" (??0?$MCODE_Data@H@@QAE@PAVMCODE_LogManager@@@Z)
Si je n'utilise pas le template, tout est OK. Donc j'imagine que c'est un problème de syntaxe ou bien je n'ai rien compris.
Merci d'avance pour votre aide.
G13.
Partager