Я знаю, что в этой теме много вопросов, но все они кажутся специфичными для кода.
У меня есть эта функция —
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
}
Это дает мне ошибку в операторе возврата, говорящем: «Ошибка проверки времени выполнения # 2 — стек вокруг переменной« результат »поврежден».
Я не вижу ничего плохого в этой функции. Массив 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& м, const Point2& р) код был верным. Но, может быть, мне нужно использовать операторы [] по-другому?
Кажется, ваша точка зрения содержит два float
с, но вы пишете в три.
Других решений пока нет …