所以这就是我正在处理的内容。'返回'作为函数指针数组中的函数
{
int Test;
void (*functions[5])() = {
return,
one,
two,
three,
four
};
for (Test = takeInput(5);; Test = takeInput(5)){
cls();
Print(L"0) Abort\n");
Print(L"1) One\n");
Print(L"2) Two\n");
Print(L"3) Three\n");
Print(L"4) Four\n");
Print(L"Enter Selection: ");
(*functions[Test])();
}
}
这就是我想要做的要点。这是某种上下文菜单系统(和takeInput(5)),将暂停输入,停止循环,直到有人输入数字为止。
问题是,以这种方式使用返回显然是错误的。我想,看到如何(我认为)返回是一个函数,我不明白为什么它不能放入一个函数指针数组,以突破菜单。我想我可以做一个虚函数,基本上只是在被调用时返回true,然后检查(这个问题是所有其他函数返回void)。即使这样做,我宁愿有一个解决方案,就像上面的非工作示例一样自成体系。
是否有一个很好,干净,希望能做到这一点的方法比我想象的要好?
'return'不是一个函数,它是一个保留字。 – gcbenison 2013-03-06 14:09:29
我会用'NULL'替换函数数组中的'return',然后在执行函数之前测试null,当函数指针为NULL时返回。 – 2013-03-06 14:13:03
作出答案,我会把它标记为这样。无论如何确保我没有试图将空指针作为函数调用,检查它可能是有意义的。我的问题是我看不到如何留下一个索引空白(很容易,现在你说的),以便能够跳过它。 – DanielCardin 2013-03-06 14:24:18