Problème Héritage & Template

[Résolu]
Signaler
Messages postés
9
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
20 avril 2006
-
Messages postés
9
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
20 avril 2006
-
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

Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
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
Messages postés
9
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
20 avril 2006

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