関数ポインタのあれこれ
関数ポインタ関係の自分用まとめ.
関数ポインタ
戻り値の型 (*関数ポインタを管理する名前)(仮引数) = 関数 double test_add(double x, double y){ return x + y; } double (*func_test_add)(double, double) = test_add; std::cout << func_test_add(1.0, 2.0) << std::endl;
typedef を利用
typedef 戻り値の型 (*関数ポインタを管理する名前)(仮引数) typedef double (*func_test_add)(double, double); func_test_add = test_add; std::cout << func_test_add(1.0, 2.0) << std::endl;
using を利用
using 関数ポインタを管理する名前 = 戻り値 (*)(仮引数) using func_test_add = double (*)(double, double); func_test_add = test_add; std::cout << func_test_add(1.0, 2.0) << std::endl;
auto を利用
auto 関数ポインタを管理する名前 = 関数 auto func_test_add = test_add; std::cout << func_test_add(1.0, 2.0) << std::endl;
std::function を利用
function<戻り値(仮引数)> 関数ポインタを管理する名前 = 関数など (ラムダ式とかもOK) function<double(double, double)> func_test_add = test_add; std::cout << func_test_add(1.0, 2.0) << std::endl;
<おまけ> 入力バッファのクリア方法
cin.clear(); cin.ignore(numeric_limits<streamsize>::max()); //バッファを最後までクリア //Cだとこの辺 (?) fflush(stdin);