如果没有超出范围,我如何在C ++中返回一个对象?

时间:2013-10-19 01:54:53

标签: c++

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

// 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

如果变量没有超出范围,返回变量的最佳方法是什么?另外,为什么我们可以返回整数,浮点数等而不必担心这个?

1 个答案:

答案 0 :(得分:4)

密钥位于方法签名中:

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

这表示“我正在将参考返回给TIntV。”

将其更改为

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

你应该没事。