2012-11-25 145 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

相关问题