Héritage de templates sur trois niveaux
Bonjour,
Je dois porter sous g++ du code compilant sous un compilateur Intel (icpc). Or une erreur se produit lorsque j'essai de compiler le code suivant :
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
|
template <typename T>
class A
{
public:
...
protected:
int membre1;
};
template <typename T>
class B : public A<T>
{
using A<T>::membre1;
public:
...
protected:
...
};
template <typename T>
class C : public B<T>
{
using B<T>::membre1;
public:
...
protected:
...
}; |
Le problème se pose lors de l'utilisation de la variable membre1 dans la classe C. En effet, g++ me donne alors l'erreur de compilation suivante :
Code:
erreur: « int A<unsigned char>::membre1 » est protégé
(N.B. : le problème ne semble pas se poser pour la classe B, ce qui me parrait normal)
Si quelqu'un a une solution, je suis preneur.
Merci d'avance.