Стек вокруг переменной поврежден

Я знаю, что в этой теме много вопросов, но все они кажутся специфичными для кода.

У меня есть эта функция —

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& р) код был верным. Но, может быть, мне нужно использовать операторы [] по-другому?

2

Решение

Кажется, ваша точка зрения содержит два floatс, но вы пишете в три.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]