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 に答える