1. ホーム
  2. c++

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

2022-02-10 07:42:05

質問

GCC 4.3で初めてC++のコードをコンパイルしたとき、(4.1、4.0、3.4で警告を出さずに正常にコンパイルした後、GCC 4.3で -Wall -Wextra という形式のエラーが大量に発生しました。 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 は余計なものです。コンパイラは、他の状況では意味を持つかもしれないが、この状況では何も意味を持たないコードを追加したために警告を発し、後で戻り値が結局変更可能であることが判明したときに、あなたが失望しないようにしたいのです。