Не может получить доступ к переменной члена в массиве структуры в структуре

Я делаю программу на C, которая должна получить доступ к массиву структуры в структуре.

Определение выглядит ниже

struct def_world
{
    bool lock;
    char tilemap;
    def_tile tile[100][100];
struct def_tile
{
    bool lock;
    char kind;
    def_obj * obj;
    void * evt;
};
struct def_obj
{
    bool lock;
    int indexOfTable;
    bool frozen;
    char x,y;
    char kind;
    char face;
    char * msg;
    char * ip;
};

в основной функции, я хочу получить доступ к миру tile[3][3]Оби лицо.

Я инициализирую мир как

def_world world={0,};

но следующие строки делают ошибки

world.tile[3][3].obj=newobj();//newobj() returns def_obj type

world.tile[3][3].obj->face;

Любая идея, как получить доступ к лицу obj?

1 ответ

Попробуйте эти строки вместо:

world.tile[3][3]->obj=newobj();//newobj() returns def_obj type

world.tile[3][3]->obj.face;

Объяснение:
world.tile[3][3]это def_tile, Это objполе не def_obj, скорее def_obj*, Поэтому, чтобы получить def_objчто он указывает, вы должны использовать->obj,
внутри def_obj, лицо - это просто символ, поэтому вы можете получить к нему доступ.face,

Другие вопросы по тегам