我正在编写代码来查找两个向量的总和:
// 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
如果变量没有超出范围,返回变量的最佳方法是什么?另外,为什么我们可以返回整数,浮点数等而不必担心这个?
答案 0 :(得分:4)
密钥位于方法签名中:
TIntV& FindSum(const TIntV& v1, const TIntV& v2)
这表示“我正在将参考返回给TIntV
。”
将其更改为
TIntV FindSum(const TIntV& v1, const TIntV& v2)
你应该没事。