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 ステートメントで、「Run-Time Check Failure #2 - 変数 'result' の周りのスタックが破損しています」というエラーが表示されます。

その機能に問題はありません。Matrix3x3 の配列はただ -

float array[3][3];

Point2 の配列は

float array [2];

Matrix3x3 クラスと Point2 クラスの両方にこのコードがあります -

/** 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];}

このコードは私に与えられたもので、点、行列、およびベクトルを使って算術演算を行うための事前の宿題がいくつかありました。私のコードはすべてのテストに合格したので、私の Point2 ITCS4120::operator* (const Matrix3x3& m, const Point2& p) コードが正しいと仮定しました。しかし、[] 演算子を別の方法で使用する必要があるのではないでしょうか?

4

1 に答える 1

6

あなたのポイントには2つfloatのsが含まれているようですが、3つに書き込んでいます。

于 2012-11-25T14:54:40.160 に答える