Bonjour,
Soit une classe générique Type qui hérite en private d'un de ses paramètres.
Soit une classe Derive dérivant de cette classe générique Type instanciée avec une troisième classe UneBase.
J'ai des erreurs lorsque j'essaie d'accéder à la classe générique Type depuis la classe Derive comme quoi la classe UneBase est inaccessible car privée. Or, je n'accède pas à cette classe privée.
Exemple :
Sur Derive():Type<UneBase>(), j'obtient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <iostream> template<class TBase> struct Type : private TBase { Type():TBase() { std::cout<<"Type<>"<<std::endl; } }; struct UneBase { UneBase() { std::cout<<"UneBase"<<std::endl; } }; struct Derive : public Type<UneBase> { Derive():Type<UneBase>() { std::cout<<"Derive"<<std::endl; } }; int main() { Derive d; return 0; }
Envoyé par gcc/MingwBon, je me dis que je vais changer :Envoyé par VisualExpressen
Code : Sélectionner tout - Visualiser dans une fenêtre à part Derive():Type<UneBase>():
Code : Sélectionner tout - Visualiser dans une fenêtre à part Derive():Type()
Et là, nouvelle erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <iostream> template<class TBase> struct Type : private TBase { Type():TBase() { std::cout<<"Type<>"<<std::endl; } }; struct UneBase { UneBase() { std::cout<<"UneBase"<<std::endl; } }; struct Derive : public Type<UneBase> { Derive():Type() { std::cout<<"Derive"<<std::endl; } }; int main() { Derive d; return 0; }En revanche Visual accèpte.Envoyé par gcc/MinGW
Mais je dois pouvoir compiler avec les 2 compilateurs.
J'avoue que je ne vois ni d'où vient le premier problème ni le second.
Mais surtout, je ne vois pas comment résoudre la chose.
Partager