1. ホーム
  2. c++

[解決済み] C++でクラスオブジェクトを参照で返すには?

2022-03-07 02:44:44

質問

あるデータを格納するObjectというクラスがあります。

このような関数を使って、それを参照で返したい。

    Object& return_Object();

そして、私のコードでは、このように呼び出すことになります。

    Object myObject = return_Object();

このようなコードを書いて、コンパイルしています。 しかし、このコードを実行すると、常にseg faultが発生します。 クラスオブジェクトを参照で返すには、どのような方法が適切でしょうか?

どのように解決するのですか?

おそらく、スタック上にあるオブジェクトを返しているのでしょう。それはつまり return_Object() は、おそらくこのようになります。

Object& return_Object()
{
    Object object_to_return;
    // ... do stuff ...

    return object_to_return;
}

こんなことなら、運が悪かったな〜。 object_to_return の最後でスコープ外に出て破壊されました。 return_Object ということは myObject は存在しないオブジェクトを参照しています。値で返すか、あるいは Object より広いスコープで宣言されているか new をヒープ上に生成します。