Fonction template, erreur interne du compilateur
Bonjour,
Je suis assez peu familier avec les template et je me retrouve confronté à un problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
.h
template<class DT> class PP2DCID_Data : public PP2DCID_BaseData
{
public:
PP2DCID_Data(PP2DCID_Element* pce, PP2DCID_Id I) : PP2DCID_BaseData(pce,I){};
bool Read(TStream*);
inline DT* GetData() { return &dt; };
private:
DT dt;
};
class PP2DCID_MultiData : public PP2DCID_BaseData
{
public:
PP2DCID_MultiData(PP2DCID_Element* pce, PP2DCID_Id I): PP2DCID_BaseData(pce,I){};
virtual ~PP2DCID_MultiData();
virtual bool Read(TStream* ps)=0;
protected:
unsigned int uiN;
vData Datas;
template<class DT> PP2DCID_Data<DT>* MandatoryGet(TStream* ps);
};
.cpp
template<class DT> PP2DCID_Data<DT>* PP2DCID_MultiData::MandatoryGet(TStream* ps)
{
PP2DCID_Data<DT>* pDDT;
pDDT = dynamic_cast<PP2DCID_Data<DT>* > (CreateElement(ps));
if (!pDDT) throw Exception("Other Data Type expected");
return pDDT;
} |
Voilà le code tel qu'il est réellement. Il n'est évidement pas entier et je peux rajouter les parties qui manquent si cela est utile.
J'ai C++ builder 5. La compilation meurt sur la ligne du fichier .cpp "template<class DT> PP2DCID_Data<DT>* PP2DCID_MultiData::MandatoryGet(TStream* ps)"
L'erreur reportée est "[C++ Erreur fatale] Format_PP2D_CID.cpp(692): F1004 Erreur du compilateur interne at 0x128a12c with base 0x1200000".
Si quelqu'un pouvait m'aider...
Merci.