Fehler bei C ++ Teil Spezialisierung der Vorlage
-
29-09-2019 - |
Frage
Ich bin mit PC-Lint (großes Werkzeug für die statische Code-Analyse - siehe http://www.gimpel.com / ) Für das folgende Stück Code:
class ASD {
protected:
template<int N>
void foo();
};
template<>
inline void ASD::foo<1>() {}
template<int N>
inline void ASD::foo() {}
PC-lint gibt mir eine Warnung:
inline void ASD::foo<1>() {}
mysqldatabaseupdate.h(7) : Error 1060: protected member 'ASD::foo(void)' is not accessible to non-member non-friend functions
Ich glaube, dass der Code in Ordnung ist und der Fehler auf der Flusen Seite, aber ich denke, Lint Werkzeug wirklich großartiges Werkzeug, und es ist wahrscheinlicher, als ich etwas nicht weiß. So ist dieser Code OK?
Lösung 2
war der Fehler in PC-Lint selbst. Es hat sich in der neuesten Version behoben.
Andere Tipps
Sie haben nur eine Funktion foo
in Ihrem struct ASD
und es ist in dem protected
Abschnitt. Es ist nicht zugänglich aus Dritt Funktionen. Zur gleichen Zeit hat struct ASD
keine andere Elementfunktionen. So niemand Zugang zu foo
hat, ich glaube, das ist der Grund für diese Fehlermeldung ist.
Versuchen Sie, Ihre Struktur der folgenden zu ändern, zum Beispiel:
class ASD {
public:
void bar() { foo<1>(); }
protected:
template<int N>
void foo();
};