メンバ関数ポインタを扱う時、& を付け忘れてたまにはまる。
クラス関数なら & いらないのに!と思ったら、付けても同じ結果になった。イミフ><
そういう文法なんだな、でいい事にしてたけど、やっぱり腑に落ちないんだよなー。
#include <stdio.h> class A { public: static int static_func() {return 100;} int instance_method() const {return 300;} }; int main() { int (*func)() = A::static_func; int (*func2)() = &A::static_func; // これでも同じだったのか... int (A::*method)() const = &A::instance_method; A a; printf("%d\n", (a.*method)()); printf("%d\n", func()); printf("%d\n", func2()); return 0; }
また C++ を基礎から勉強しようかなー。春になるし(?)。と、id:higepon さんの即時実行っぷり*1をみて思ったのであった。私は有言不実行です(最悪だ)。