我找到了一个与我的问题类似的答案here。但它没有按照我的预期运作。 所以我有
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();
但是在“...-&gt; Start();”编译器说“表达式必须有指针类型”。
有什么想法吗? 感谢
答案 0 :(得分:2)
您必须使用tasklist[i].Start(
)而不是tasklist[i]->Start()
这是因为 ab 用于访问对象的成员b,而 a-&gt; b 访问对象的成员b
您可以获得完整的解释here
答案 1 :(得分:1)
您访问Start
的方式与访问val
的方式相同 - 点数为tasklist[i].Start()
。