Salut les progueux
Bon je m'excuse d'avance si ca a déja été traité / trivial mais j'avoue que j'ai pas trouvé de terme pertinent pour lancer une recherche
Voilà mon problème : j'ai une hiérarchie simplissime de trois classes. Une classe de base (A) et deux classes qui en héritent (B et C). Sur A j'ai une méthode (virtuelle pure) protected qui fait office de fonction utilitaire puisque j'aimerai que les classes dérivées puissent s'en servir mais pas l'exterieur. Cette méthode me permet d'accéder à des infos internes à la classe qui l'implémente (retourne une instance de class infos).
J'ai donc logiquement un truc comme ça :
Code :
- class A {
- public:
- A();
- virtual ~A();
- virtual bool link(A *peer) = 0;
- protected:
- virtual infos *helper() = 0;
- };
- class B : public A{
- public:
- B();
- virtual ~B();
- virtual bool link(A *peer);
- protected:
- virtual infos *helper();
- };
- class C : public A {
- public:
- C();
- virtual ~C();
- virtual bool link(A *peer);
- protected:
- virtual infos *helper();
- };
|
Mon souci c'est que j'aimerai faire quelque chose comme ça:
Code :
- bool B::link(A *peer) {
- infos *infos_peer = peer->helper();
- infos *infos_self = helper();
- // traitement en fonction de ces infos
- ...
- }
|
Mais c'est pas possible, A::helper() est protected dans ce contexte
Alors à part passer la fonction helper() en public (ce qui ne me plaît pas du tout) est ce qu'il existe une solution à ce problème ? Ou est ce que c'est un problème de design plus général ?
Message édité par Bi$cotte le 13-05-2007 à 14:36:14