2

私は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

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

4

2 に答える 2

2

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

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

class ASD {
    public:
        void bar() { foo<1>(); }
    protected:
        template<int N>
        void foo();
};
于 2010-08-18T13:48:59.947 に答える
1

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

于 2010-09-16T14:14:43.820 に答える