3

如何使用函数指针而不是 switch 语句?

4

2 回答 2

7

与 ars 发布的链接略有不同的方法:您可以将 switch 语句中的值用作函数指针数组中的数组索引。所以不要写

switch (i) {
    case 0: foo(); break;
    case 1: bar(); break;
    case 2: baz(); break;
}

你可以这样做

typedef void (*func)();
func fpointers[] = {foo, bar, baz};
fpointers[i]();

或者,您可以使用函数指针而不是 ars 答案中描述的数字。

于 2009-07-16T00:22:14.023 回答
3

这是一个用 C++ 很好地解释这一点的页面:

编辑:

截至 2020 年 6 月,以上链接已断开。缓存在此处:

https://web.archive.org/web/20170606042951/http://oopweb.com/CPP/Documents/FunctionPointers/Volume/CCPP/FPT/em_fpt.html

于 2009-07-15T06:20:13.297 回答