Pregunta

estoy usando PC-Lint (gran herramienta para el análisis de código estático - ver http://www.gimpel.com / ) Para el siguiente trozo de código:

class ASD {
    protected:
        template<int N>
        void foo();
};

template<>
inline void ASD::foo<1>() {}

template<int N>
inline void ASD::foo() {}

PC-pelusa me da una advertencia:

inline void ASD::foo<1>() {}
mysqldatabaseupdate.h(7) : Error 1060: protected member 'ASD::foo(void)' is not accessible to non-member non-friend functions

Creo que el código está muy bien y el error está en el lado de pelusa, pero creo que es la herramienta Lint herramienta realmente grande y es más probable que yo no sé algo. Así es el código OK?

¿Fue útil?

Solución 2

El error era en sí mismo PC-Lint. Se ha corregido en la versión más reciente.

Otros consejos

Usted tiene único foo función en su struct ASD y está en la sección protected. No se puede acceder desde las funciones que no son miembros. Al mismo tiempo struct ASD no tiene ninguna otra función miembros. Así que nadie tiene acceso a foo, creo que esta es la razón de que el mensaje de error.

Trate de cambiar su estructura a la siguiente, por ejemplo:

class ASD {
    public:
        void bar() { foo<1>(); }
    protected:
        template<int N>
        void foo();
};
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top