1. ホーム
  2. c++

[解決済み] gcc の警告: 関数の戻り値の型修飾子について

2023-05-24 11:48:13

質問

初めてGCC 4.3でC++のコードをコンパイルしたとき、(4.1、4.0、3.4で警告を出さずにうまくコンパイルした後、を指定して -Wall -Wextra オプションで4.1、4.0、3.4では警告を出さずにうまくコンパイルできたのに)、突然、次の形式のたくさんのエラーが出ました warning: type qualifiers ignored on function return type .

考える temp.cpp :

class Something
{
public:
    const int getConstThing() const {
        return _cMyInt;
    }
    const int getNonconstThing() const {
        return _myInt;
    }

    const int& getConstReference() const {
        return _myInt;
    }
    int& getNonconstReference() {
        return _myInt;
    }

    void setInt(const int newValue) {
        _myInt = newValue;
    }

    Something() : _cMyInt( 3 ) {
        _myInt = 2;
    }
private:
    const int _cMyInt;
    int _myInt;
};

実行中 g++ temp.cpp -Wextra -c -o blah.o :

temp.cpp:4: warning: type qualifiers ignored on function return type
temp.cpp:7: warning: type qualifiers ignored on function return type

どなたか、C++の標準に違反するような間違ったことをしていないか教えていただけませんか?私は、値で返すとき、先頭の const は余計なものだと思いますが、なぜそれで警告を出す必要があるのか理解に苦しみます。他にconstを省略すべき場所があるのでしょうか?

どのように解決すればよいのでしょうか?

規格に抵触しない そのため、彼らは 警告 であって エラー .

そして、確かにあなたの言うとおり、先頭の const は余計なものです。コンパイラは、他の状況では何かを意味するかもしれないが、この状況では何も意味しないコードを追加したために警告を発し、戻り値が結局変更可能であることが判明したときに後で失望しないようにしたいのです。