J'utilise PC-Lint (outil d'analyse de code statique - voir http://www.gimpel.com/) Pour le morceau de code suivant:erreur avec une spécialisation partielle C de du modèle
class ASD {
protected:
template<int N>
void foo();
};
template<>
inline void ASD::foo<1>() {}
template<int N>
inline void ASD::foo() {}
PC-lint me donne un avertissement:
inline void ASD::foo<1>() {}
mysqldatabaseupdate.h(7) : Error 1060: protected member 'ASD::foo(void)' is not accessible to non-member non-friend functions
Je crois que le code est bien et l'erreur est du côté de la fibre, mais je pense que l'outil de Lint est vraiment excellent outil et il est plus probable que je ne sais pas quelque chose. Alors, est-ce que ce code est OK?
Mais aucune classe enfant arbitraire n'a-t-elle accès à la fonction 'foo'? –
Dans cet exemple, et je crois au code qui produit l'erreur, il n'y a pas de classes enfants. –
Essayez d'ajouter une fonction virtuelle à la classe. Cela peut faire un compromis ici. –