如何使用C ++上的引用删除对象

时间:2012-10-13 03:20:01

标签: c++ oop object reference

我有一个项目规范(所以我无法改变它)我创建了一个函数

const mat4& GetView() const;

在此函数上创建了mat4对象:

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

稍后我会删除它。但是一旦我离开了GetView方法,我怎么能这样做呢?

感谢。

2 个答案:

答案 0 :(得分:4)

取地址:

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

(我假设operator&没有超载。如果是,你需要做一些更复杂的事情。)

答案 1 :(得分:0)

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

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

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