OVH Cloud OVH Cloud

heritage template

1 réponse
Avatar
lahouaoui
Bonjour a tous,
voilà je crée une classe de base template comme suit :

template <class T = float>
class classebase
{

public:
classebase (int BufferSizeInPoints,int RateInHz = 1);
classebase ();
virtual ~classebase ();
BOOL GetPoints (DWORD* pFromNumber, CArray<T,T>* pData);
};

Je derive de cette classe

class classefille : public classebase <>
{
//fonction spécigique
};
le code compile mais l'edition de lien ne marche, il ne trouve pas les
fonctions template et même destructeur.
ex :
classefille->GetPoints (pFromNumber, CArray<float,float>* pData);
Je sais que au niveau template le code est géné au moment le l'appel.
Je ne comprends pas.
merci d'avance.

1 réponse

Avatar
Michaël Cortex
lahouaoui wrote:
le code compile mais l'edition de lien ne marche, il ne trouve pas les
fonctions template et même destructeur.
ex :
classefille->GetPoints (pFromNumber, CArray<float,float>* pData);
Je sais que au niveau template le code est géné au moment le l'appel.
Je ne comprends pas.


Tu dois mettre l'implémentation de ton template (i.e. le corps de
classebase::GetPoints) avant de déclarer ta classe classefille.

C'est un règle avec les template. La méthode la plus utilisée est de mettre
l'implémentation du template dans .cpp (ou .ctt, ou .cxx selon les gens,
...), puis à la fin du .h, on met :

#include "ImplementationTemplate.cpp".

merci d'avance.


de rien.
--
<=- Michaël "Cortex" Monerau -=>