2012-11-25 151 views
2

我知道這個主題有很多問題,但它們看起來都是特定於代碼的。圍繞變量的堆棧損壞

我有這個功能 -

Point2 ITCS4120::operator* (const Matrix3x3& m, const Point2& p) { 
    Point2 result; 
    for(int i=0;i<3;i++) { 
     result[i] = (m[i][0]*p[0]) + (m[i][1]*p[1]) + (m[i][2]); 
     } 
    return result; //error here 
    } 

它給了我一個錯誤的return語句說:「運行時檢查失敗#2 - 圍繞堆棧變量‘結果’已損壞。」

我看不出該功能有什麼問題。該MATRIX3X3的數組只是 -

float array[3][3]; 

和點2的陣列是

float array [2]; 

無論是MATRIX3X3和點2班有這樣的代碼 -

/** Write access for element in row [i] */ 
inline Scalar* operator[](int i) {return array[i];} 
/** Read access for element in row [i] */ 
inline const Scalar* operator[](int i)const {return array[i];} 

此代碼是給我和我有一些以前的作業用分數,matricis和向量做算術。我的代碼通過了所有測試,因此我假定我的Point2 ITCS4120 :: operator *(常量Matrix3x3 & m,const Point2 & p)代碼是正確的。但也許我需要不同地使用[]運算符?

回答

6

看來你的觀點包含兩個float s但你寫給三。

+0

謝謝!猜猜我只需要另一雙眼睛。 – Sterling

相關問題