Maison >développement back-end >C++ >Pourquoi ne puis-je pas accéder aux membres protégés de ma classe héritée lorsque j'utilise l'héritage de modèles ?

Pourquoi ne puis-je pas accéder aux membres protégés de ma classe héritée lorsque j'utilise l'héritage de modèles ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 11:13:321040parcourir

Why Can't I Access Protected Members in My Inherited Class When Using Template Inheritance?

Visibilité des membres de la classe parent manquante dans la classe héritée

Lors de l'héritage d'une classe modèle, comme dans le cas d'unorderedArrayListType héritant de arrayListType, Les variables membres déclarées comme protégées dans la classe parent peuvent ne pas être accessibles dans la classe héritée. Cela peut entraîner des erreurs de compilation lors de la tentative d'accès à ces variables.

Dans le code fourni, le message d'erreur indique que la longueur et la liste des variables protégées dans arrayListType ne sont pas reconnues dans unorderedArrayListType. Pour résoudre ce problème, le compilateur doit être explicitement informé que ces membres sont hérités de la classe parent.

Il existe deux manières courantes d'y parvenir :

  1. Préfacer avec this-> : utilisez this-> avant chaque référence de variable membre dans unorderedArrayListType, par exemple this->list, this->length.
  2. Utilisation des déclarations : incluez les déclarations dans la section privée de la classe héritée, en utilisant le format suivant : en utilisant arrayListType::length;.

En déclarant ou en faisant précéder les références de membre avec this->, le compilateur peut établir la dépendance entre la classe héritée et le modèle de classe parent, permettant l'accès aux membres protégés de la classe parent.

Il est important de noter que le fait de ne pas résoudre correctement ce problème lors de la compilation peut entraîner des erreurs de symboles non définis lors de la phase de liaison de l'exécution du programme.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn