我正在编写代码以查找两个 vector 的总和:

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

我需要返回总和,但是我要返回零 vector ,因为vSum似乎超出范围。
utilities.cpp:6: warning: reference to local variable ‘vSum’ returned

在不超出范围的情况下返回变量的最佳方法是什么?另外,我们怎么能返回整数,浮点数等而不必担心呢?

最佳答案

密钥在您的方法签名中:

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

这说:“我正在返回对TIntV的引用。”

更改为
TIntV FindSum(const TIntV& v1, const TIntV& v2)

你应该没事的

关于c++ - 如何在C++中返回对象而又不会超出范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19461492/

10-08 21:30