【c++】Reference to stack memory associated with local variable

掲題の警告が出ました。
どういう意味なんでしょうか?

エラーが出たコードは概ね以下の形です。

const string& Sample::getString(int a)
{
  string data { to_string(a) };
  return data;
}

return dataの部分で警告が出ます。

無効な参照の返却

問題はこのメソッド内でしか有効でないインスタンスの参照を返している事でした。

このメソッドを利用してこのインスタンスの参照を得たとしても、メソッドを抜けた時点でこのインスタンスは既に破棄されています。
だからダメだよってコンパイラが教えてくれているんですね。

対処

参照を返すのではなくデータそのものを返す様にすれば良いかと思います。

誰かのお役に立てば。

コメント

タイトルとURLをコピーしました