Не может получить доступ к переменной члена в массиве структуры в структуре
Я делаю программу на 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
,