Поле 'плитка' не может быть разрешено с помощью typedef struct

0

Эй, ребята, это не должно быть так сложно, но почему

            fscanf(fp, "%d", Map.tile[x][y]);

Часть плитки говорит, что поле "tile" не может быть разрешено. Извините за проблемы с новичком, но я предполагаю, что это должно быть проблемой с преобразованиями char в int. Как я могу это исправить? Спасибо, waco001

void MapManager::loadMap(char *name){
    int x, y;
    FILE *fp;

    fp = fopen(name, "rb");
    const int MAX_MAP_Y = 32;
    const int MAX_MAP_X = 32;
    typedef struct Map
    {
        int tile[MAX_MAP_Y][MAX_MAP_X];
        char xs;
    } Map;
    /* If we can't open the map then exit */

    if (fp == NULL)
    {
        printf("Failed to open map %s\n", name);

        exit(1);
    }

    /* Read the data from the file into the map */

    for (y=0;y<MAX_MAP_Y;y++)
    {
        for (x=0;x<MAX_MAP_X;x++)
        {
            fscanf(fp, "%d", Map.tile[x][y]);
        }
    }

    /* Close the file afterwards */

    fclose(fp);
}
Теги:
sdl
game-engine

1 ответ

2
Лучший ответ

Map - это тип, но вам нужен объект. Вы могли бы, например, использовать

Map map;
// ...
if (fscanf(fp, "%d", map.tile[x][y]) != 1) {
    fprintf(stderr, "ERROR: failed to read map.tile[%d][%d]\n", x, y);
}
  • 0
    Ничего себе такая глупая ошибка от меня, не зная моих основ ... Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню