У меня есть матрица макета
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
}
}
}
но я получаю эти ошибки, я не уверен, что я делаю неправильно!
Я пытаюсь сделать это таким образом, чтобы иметь только одну матрицу в коде и иметь указатели на нее и вращать эти указатели таким образом, чтобы они передавали повернутую матрицу, не создавая другую.
Итак, как мне в моей структуре Bitmap создать матрицу указателей, указывающих на матрицу 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