2013-10-19 37 views
1

我寫代碼,找出兩個向量的總和:如何在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 

什麼是最好的方式來返回一個變量,而不會超出範圍?此外,我們如何能夠返回整數,浮點數等,而不必擔心這一點?

+0

只是不要通過參考返回它。 – chris

+0

我以爲我以價值回報它?我將vSum聲明爲TIntV,而不是TIntV& – Jessica

+1

@eeeeeeeeee:您的函數返回類型是'TIntV&'。 –

回答

4

關鍵是在你的方法簽名:

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

這是說:「我返回參考TIntV。」

將其更改爲

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

,你應該罰款。

+0

修正了,謝謝! :) – Jessica

+0

沒問題!如果這對你有幫助,請記住接受答案。 –