Maison >développement back-end >C++ >Comment accéder aux membres publics d'une classe de base basée sur un modèle en C ?
Invisibilité des membres publics dans l'héritage de classe modélisé
Considérez le code C suivant :
<code class="cpp">class CBase { public: char Arr[32]; int Fn1(); int Fn2(); }; class CDerived : public CBase { public: int FnSum(); };</code>
Dans ce code, CDerived hérite des membres publics de CBase. Cependant, si ce code est modélisé, ce qui rend Arr et les fonctions modélisés, les membres publics de CBase deviennent invisibles pour CDerived.
Solutions
Pour résoudre ce problème, plusieurs des solutions existent :
Problème avec les solutions
Les solutions n°1 et n°2 nécessitent des ajouts verbeux au code, ce qui entraîne un gonflement des sources et des répétitions. La solution n°4, désactivant la stricte conformité, n'est pas portable et s'éloigne du standard C.
Solution améliorée
Pour simplifier le code, on peut utiliser des macros pour automatiser l'ajout de l'instruction using dans la solution n°3 :
<code class="cpp">#define USING_CBASE(param) USING_ALL(CBase<param>, Arr, Fn1, Fn2, Fn3, Fn4, Fn5) // In CDerived<BYTES>, in a `public:` section USING_CBASE(BYTES);</code>
Cette macro générera automatiquement les instructions using nécessaires pour tous les membres de CBase qui sont utilisés dans CDerived.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!