0

関数を作成したプロジェクト仕様があります(変更できません)

const mat4& GetView() const;

mat4オブジェクトは、次の関数で作成されます。

mat4* a = new mat4();
mat4 &ret = *a;
return ret;

そして後でそれを削除したいと思います。しかし、GetViewメソッドを終了したら、どうすればそれを実行できますか?

ありがとう。

4

2 に答える 2

4

アドレスを取る:

const mat4 & x = GetView();
delete &x;

(オーバーロードされていないと仮定してoperator&います。オーバーロードされている場合は、もう少し複雑なことをする必要があります。)

于 2012-10-13T03:23:00.033 に答える
0

ここには、合理的な選択肢が 3 つしかないのではないかと強く思います。

  • あなたは仕様を読み違えており、GetView戻ってはいけませんconst mat4&
  • 仕様を読み違えておりGetView、新しく作成されたオブジェクトではなく、既存のオブジェクトへの参照を返すことになっています
  • プロジェクトの仕様には深刻な欠陥があり、問題を推し進める価値があります。

もちろん、最後の点については、プッシュを開始する前に、できるだけ多くの論理的根拠を収集する必要があります。

于 2012-10-13T03:47:14.653 に答える