同様の宣言を持つ関数がいくつかあります。
int foo(int a);
int bar(int a);
int test(int a);
そして、私のメッセージ ハンドラーのロジックはまったく同じです。
void HandleFoo(int a) {
process(a);
int ret = foo(a);
if (ret)
print(a);
}
void HandleBar(int a) {
process(a);
int ret = bar(a);
if (ret)
print(a);
}
void HandleTest(int a) {
process(a);
int ret = test(a);
if (ret)
print(a);
}
だから、一般的な関数を書くことが可能かどうか疑問に思っています:
void Handle(int a, func_pointer fn) {
process(a);
int ret = fn(a);
if (ret)
print(a);
}
は、をfn
受け入れることができる汎用関数ポインタのようなものです。foo
bar
test
これは可能ですか?
ところで、現在私のプロジェクトでは C++11 とブーストはなく、TR1 のみを使用しています。