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?

War es hilfreich?

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();
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top