取临时对象的地址

时间:2012-05-04 13:06:06

标签: xcode

我在很多平台上开发,今天我的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))

1 个答案:

答案 0 :(得分:2)

您需要更改代码,不能获取非左值的地址,而且临时不是。

更改代码,将const引用改为Vector3D。这不会花费您的副本,并且是明确定义的行为。

float Vector3Dlength(Vector3D const& pvect) {
  return sqrt(pvect.x * pvect.x ...);
}

...
float dist = Vector3Dlength(Vector3D(pos2 - pos1));