2

我正在编写代码来查找两个向量的总和:

// Vector operations
TIntV& FindSum(const TIntV& v1, const TIntV& v2) {
  AssertR(v1.Len() == v2.Len(), TStr::Fmt("Vector lengths unequal"));
  TIntV vSum = TIntV(v1);
  for (int i = 0; i < vSum.Len(); i++) {
    vSum[i] += v2[i];
  }
  return vSum;
}

我需要返回总和,但我要返回零向量,因为 vSum 似乎超出了范围。

utilities.cpp:6: warning: reference to local variable ‘vSum’ returned

在不超出范围的情况下返回变量的最佳方法是什么?另外,为什么我们可以返回整数、浮点数等而不用担心这个?

4

1 回答 1

4

关键在您的方法签名中:

TIntV& FindSum(const TIntV& v1, const TIntV& v2)

这表示“我正在返回对 a 的引用TIntV

将其更改为

TIntV FindSum(const TIntV& v1, const TIntV& v2)

你应该没事。

于 2013-10-19T02:01:34.360 回答