Имам матрица на оформление
const int boatRect[MAX_BITMAP_SIZE][MAX_BITMAP_SIZE] = { // 5
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0}
};
и структура с указател към нея (матрица):
typedef struct bitmap {
Shape shape;
const int (*matrix)[MAX_BITMAP_SIZE];
int orientation;
int size;
} Bitmap;
След това искам да транспонирам (част от процеса на ротация) матрицата в структурата:
void transpose(const int (*shape)[MAX_BITMAP_SIZE]) {
const int *temp;
for(int i = 0; i < MAX_BITMAP_SIZE; i++) {
for(int j = 0; j < i; j++) {
temp = (const int *) shape[i][j]; //Cast to 'const int *' from smaller integer type 'int'
shape[i][j] = shape[j][i]; //Read-only variable is not assignable
shape[j][i] = temp; //Read-only variable is not assignable
}
}
}
но получавам тези грешки, не съм сигурен какво правя погрешно!
Опитвам се да го направя по този начин, за да имам само една матрица в кода и да имам указатели към нея и да въртя тези указатели по начин, по който предават завъртяната матрица, без да създават друга.
И така, как да създам в моята растерна структура матрица от указатели, които сочат към const int матрицата, и след това да завъртя тази матрица от указатели (не тази от int)?
void transpose(int (*shape)[MAX_BITMAP_SIZE])
Предупреждението за преобразуването ще продължи, но можете да се отървете от това, като променитеconst int *temp;
наconst int temp;
и премахнете преобразуването (тъй като присвоявате int на int). - person Louis Cloete   schedule 21.04.2020