Указатели на приведение функций - PullRequest
0 голосов
/ 11 мая 2018

У меня есть следующие структуры:

struct mtmFlix_t {
    List usersList;
    List seriesList;
};

struct User_t {
    int age;
    char* username;
    MtmFlix mtmFlix;
};

Это typedefs в list.h:

typedef void* ListElement;
typedef ListElement(*CopyListElement)(ListElement);
typedef void(*FreeListElement)(ListElement);

Это typedefs в user.h и MtmFlix.h:

typedef struct User_t *User;
typedef struct mtmFlix_t* MtmFlix;

Я хотел бы использовать следующую функцию в mtmflixCreate, но я не могу понять, как привести UserCreate и UserFree к (*void)?

List listCreate(CopyListElement copyElement, FreeListElement freeElement);

MtmFlix mtmFlixCreate()
{
    MtmFlix newMtmFlix = malloc(sizeof(*newMtmFlix));
    if (newMtmFlix == NULL) {
        return NULL;
    }
    newMtmFlix->seriesList=listCreate(?????);
    newMtmFlix->usersList=listCreate(?????);
}

В user.h отображаются следующие функции:

User UserCreate(MtmFlix mtmFlix, const char* username,int age);
Void UserFree(User user);

1 Ответ

0 голосов
/ 11 мая 2018

Ты не.Вы должны создать функции, которые имеют необходимые типы.Как то так:

ListElement CopyUserListElement(ListElement elem) {
    // (ListElement) is not necessary here, but included for completeness
    return (ListElement)CopyUser((User_t*)elem);
}

void FreeUserListElement(ListElement elem) {
    UserFree((User_t*)elem);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...