J’ai écrit un exemple de classe avec l’utilisation de modèles. c’est assez simple:
template class myClass { public: // construction, destruction myClass(); virtual ~myClass(); class Object { public: Object() { m_pNext = NULL; m_pPrev = NULL; } ~Object() {} T m_Value; Object* m_pNext; Object* m_pPrev; }; public: // accessor functions Object* Beginning(); private: Object* m_pBegin; Object* m_pEnd; INT m_nCount; }; template inline myClass::Object* myClass::Beginning() { return m_pBegin; } template inline myClass::myClass() { } template inline myClass::~myClass() { }
J’utilise Visual Studio 2008, et voici l’erreur de compilation
erreur C2143: erreur de syntaxe: manquant ‘;’ avant ‘*’ … erreur C4430: spécificateur de type manquant – int supposé. Remarque: C ++ ne prend pas en charge default-int.
les erreurs sont liées à cette ligne:
inline myClass::Object* myClass::Beginning()
Quelqu’un peut-il me dire ce qui n’allait pas dans ce code?
Merci.
Vous devez changer
template inline myClass::Object* myClass ::Beginning() { return m_pBegin; }
à
template inline typename myClass::Object* myClass ::Beginning() { return m_pBegin; }
car myClass
est un type dépendant.