获取临时对象的地址



我正在许多平台上开发,今天我在iOS和xCode上遇到了问题,我正在将一些项目更新到最后一个 xCode 4.3.2(Apple LLVM 编译器 3.1)

由于很少有警告变成了错误:"获取临时对象的地址"

不幸的是,我使用了很多,请参阅我的示例:

float dist = Vector3Dlength(&Vector3D(pos2 - pos1));
  • 避免创建临时 var 并生成新的代码行(尽管这是编译器在堆栈上创建的)
  • 我知道自 10 年这样的编码以来可能导致的错误:)但我想继续这样下去...

有人建议避免此错误而无需编辑代码?(使用新的xCode 4.3.2(Apple LLVM编译器3.1))

你需要改变你的代码,你不能获取一个不是左值的东西的地址,而且那个临时的不是左值

更改代码以改为对Vector3D进行常量引用。这不会花费您一份副本,并且是明确定义的行为。

float Vector3Dlength(Vector3D const& pvect) {
  return sqrt(pvect.x * pvect.x ...);
}
...
float dist = Vector3Dlength(Vector3D(pos2 - pos1));

最新更新