4

/Zaコンパイラが厳密に標準のISOC++を使用するように、言語拡張を無効にするコンパイラオプションを設定しました。これは私が次の警告を受けているサンプルのインターフェースクラスです

警告C4180:関数型に適用された修飾子には意味がありません。無視されます

これは、関数の戻りタイプのconst修飾子に関するものです。constを削除すると、警告が消えますが、それはしたくありません。むしろ、言語拡張を有効に戻したいのです。

私の質問は次のとおりです。その警告は合理的ですか?そうでない場合は、プラグマを使用して警告を無効にしますが、その前に、この警告が「誤検知」であることを確認したいと思います。

次のクラスは正しいANSIISOC ++なので、そうではありませんか?したがって、警告を無効にする必要がありますか?

    class IBet
    {
    public:
        IBet() { };
        virtual ~IBet() = 0 { };
        virtual const float parentChips() const = 0; // Warning C4180
        virtual const short parentChilds() const = 0; // Warning C4180
            // ...
    };
4

1 に答える 1

7

2つの関数の戻り値はとして宣言されconstます。値で渡されるため、意味がありません。constそれはまったく目的を果たさないので、あなたはそれを取り除くことができます。

于 2012-04-28T13:21:39.343 に答える