Vous pouvez avoir remarqué que les versions ultérieures de gcc est plus stricte avec les normes (see this question)importer toutes les variables de classe parente
Tous les membres hérités d'une classe de modèle doit être appelé en utilisant le nom complet, par exemple. ParentClass<T>::member
au lieu de seulement member
Mais j'ai encore beaucoup de vieux code qui ne respecte pas cela. L'ajout de using ParentClass<T>::member
pour chaque membre utilisé dans chaque classe est assez pénible. Est-il possible de faire quelque chose comme using ParentClass<T>::*
? Je préférerais mieux que désactiver cette vérification en g ++ mais s'il y en a maintenant, comment puis-je la désactiver?
Modifier:
Selon C++ FAQ (de STH merci) ceux-ci sont la seule façon de résoudre correctement les noms de variables membres hérités:
Modifier l'appel
f()
-this->f()
. Puisque ceci est toujours implicitement dépendant dans un modèle,this->f
est dépendant et la recherche est donc différée jusqu'à ce que le modèle soit réellement instancié, à quel point toutes les classes de base sont considérées.Insérer
using B<T>::f
; juste avant d'appelerf()
.Modifiez l'appel de f() en
B<T>::f()
.
Alors maintenant, la recherche de l'interrupteur droit de désactiver la résolution de nom ...