1. ホーム
  2. c++

[解決済み] エラーです。x型の参照をy型のイニシャライザにバインドする際に修飾子が欠落しました。

2022-02-03 01:44:52

質問

なぜ、以下のようなエラーが発生するのでしょうか。

IntelliSense: Qualifiers dropped in binding reference of type string &" から "const string" 型のイニシャライザーに変更しました。

.h

class A
{
public:
    wstring& GetTitle() const;
private:
    wstring title;    
};

.cpp

wstring& GetTitle() const
{
    return this->title;
}

constワードを削除すると、文句を言わなくなります。 そして、私はその変数に何の変更も加えていないのですか?

どうすればいいですか?

クラスのメンバーへの const でない参照を返すことで、呼び出し元はあたかも const でないかのようにオブジェクトにアクセスできることになります。しかし GetTitle は、const関数であるため、そのアクセスを許可する権利を持っていません。

例えば

A a;
string& b = a.GetTitle(); // Allows control over original variable