вызвать функцию в структуре typedef в C - PullRequest
0 голосов
/ 14 сентября 2011

Я нашел похожий ответ на мою проблему здесь .Но это не работает так, как я ожидал.Таким образом, у меня есть

void funcA(void) {
  // do sth.
}
void funcB(void) {
  // do sth.
}

typedef struct tasks {
    int val;
    void (*Start)(void);
} tasks; 

и

const tasks tasklist[] = 
    {       
        {0, funcA},
        {3, funcB}
    };

for (i=0; i < task_cnt; i++ )     
    if (tasklist[i].val == 3)
        tasklist[i]->Start();

Но в "...-> Start ();"Компилятор говорит, что «выражение должно иметь тип указателя».

Есть идеи?Спасибо

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

вы должны использовать tasklist[i].Start() вместо tasklist[i]->Start()

это связано с тем, что ab используется для доступа к элементу b объекта a, в то время как a-> b доступ к члену b объекта, на который указывает a.

, полное объяснение которого здесь

1 голос
/ 14 сентября 2011

Вы получаете доступ к Start так же, как и к val - с точкой: tasklist[i].Start().

...