質問

私はPC -LINTを使用しています(静的コード分析に最適なツール - 参照 http://www.gimpel.com/)次のコードのチャンクについて:

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

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

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

PC-LINTは私に警告を与えます:

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

コードは問題なく、エラーは糸くず側にあると思いますが、糸くずのツールは本当に素晴らしいツールであり、何かを知らないよりも可能性が高いと思います。このコードは大丈夫ですか?

役に立ちましたか?

解決 2

バグはPC-Lint自体にありました。最新バージョンで修正されています。

他のヒント

あなたが持っている 唯一 働き foo あなたの中で struct ASD そしてそれはにあります protected セクション。非会員機能からはアクセスできません。同時に struct ASD 他のメンバー関数はありません。だから誰もアクセスできません foo, 、これがそのエラーメッセージの理由だと思います。

たとえば、構造体を次のように変更してみてください。

class ASD {
    public:
        void bar() { foo<1>(); }
    protected:
        template<int N>
        void foo();
};
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top