Problème Héritage & Template

Résolu
cs_Aquarian Messages postés 9 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 20 avril 2006 - 21 févr. 2005 à 23:17
cs_Aquarian Messages postés 9 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 20 avril 2006 - 22 févr. 2005 à 09:11
Bonjour,

J'ai le code suivant qui compile sous Visual Studio et pas sous Dev-cpp. Est-ce qu'il faut ajouter des options pour ce dernier ou est-ce qu'il y a une erreur que je n'ai pas vu...
L'erreur donnée par Dev-cpp est indiquée dans le code.


template
<class T> class A {


protected :


T _a;


} ;


template<class T>


class B : public A<T> {




public :


void fonction() {_a+=5; } <---- error: `_a' undeclared (first use this function)


} ;


int _tmain(int argc, _TCHAR* argv[])


{


B _B;


return 0;


}

Merci d'avance pour vos réponses.

_________
Aquarian

2 réponses

Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
22 févr. 2005 à 08:53
Salut,

essaye :



void fonction() { A<T>::_a += 5; }



une autre méthode serait de mettre une fonction add dans A<T> pour faire ça.



J'ai l'impression qu'il te manque un constructeur par défaut dans A, initialisant _a;

du genre

public:

A() : _a( T() ) {}



sinon tu risques d'avoir des surprises (parfois longues à trouver).

Ma participation à la saturation du net:
http://hylvenir.free.fr
3
cs_Aquarian Messages postés 9 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 20 avril 2006
22 févr. 2005 à 09:11
Salut,

Pour ce qui est des constructeurs, je les avais enlevés pour que le code soit plus lisible.
En tout cas, c'est bizzare que sans template la variable _a ne pose pas de problème et qu'avec le template il ne la reconnaisse plus.

Merci beaucoup :)

_________
Aquarian
0
Rejoignez-nous