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

我强烈怀疑这里只有三个合理的选择:

  • 您误读了规范,GetView不应该返回const mat4&
  • 您误读了规范,并且GetView应该返回对现有对象的引用而不是新创建的对象
  • 项目规范存在严重缺陷,确实值得推动此事。

当然,在最后一点上,你真的应该在开始推动之前尽可能多地收集理由。

于 2012-10-13T03:47:14.653 回答