我正在编写代码以查找两个 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/