関数ポインタ

関数ポインタを触ってなかったら完全に忘れてしまっていたのでメモ。

以下サンプルコードの3行目で引数がint, char*で戻り値がint型の関数ポインタの別名を定義している。
main関数の1行目でFuncを宣言してprint()やprintHello()のポインタとして使うことができる。

サンプル

#include <iostream>

typedef int (*Func) (int num, char *args);

int print(int num, char* args){
    std::cerr << num << std::endl;
    std::cerr << args << std::endl;

    return 0;
}

int printHello(int num, char* args){
    std::cerr << "hello" << num << std::endl;
    std::cerr << "hello" << args << std::endl;

    return 0;
}

int main() {
    Func func;
    func = print;
    func(10, "hogehoge");

    func = printHello;
    func(20, "fugafuga");

    return 0;
}

難しいことではないのだけど、人のソースを読んでいるときにいきなり出てくるとなんだったっけってなる。