не может получить доступ к переменной члена в массиве структуры в структуре - PullRequest
0 голосов
/ 23 августа 2011

Я делаю программу на C, которой требуется доступ к массиву struct в struct.

Определение выглядит следующим образом:

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;

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

1 Ответ

1 голос
/ 23 августа 2011

Попробуйте использовать следующие строки:

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 - это просто символ, поэтому вы можете получить к нему доступ с помощью .face.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...