Как я могу реализовать эту концепцию OOP на языке C? - PullRequest
0 голосов
/ 02 мая 2020

Я хочу реализовать структуру, которая объединяет некоторые указатели функций. Так что я могу l oop над этими структурами и эффективно вызывать их указатели функций:

typedef struct
{
    int ActionType;
    FunctionPointer ActionPerformer;
    FunctionPointer ActionResetter;
}Action;

Loop over Actions
Action.ActionPerformer()

И тут возникает проблема: некоторые функции-исполнители имеют разное количество параметров, другие даже не есть параметры. То же самое относится и к ресетерам.

Как я могу реализовать такую ​​концепцию эффективным и общим способом?

1 Ответ

0 голосов
/ 02 мая 2020

ПРЕДУПРЕЖДЕНИЕ: НЕПРАВИЛЬНО см. Комментарии, почему Объявите указатели вашей функции как

void (*funcptr)() ;

пустые скобки указывают неизвестное количество аргументов.
Тогда вы можете сделать что-то вроде этого

void food(int a, int b) {
    /* whatever */
}

void bar(char c) {
    /* whatever */
}

int main (){
    void (funcptr) () ;
    funcptr=&foo;
    (*funcptr) (1, 2) ;
    funcptr=&bar;
    (*funcptr) ('a') ;
    /* whatever */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...