邪道キャスト
int add(int a, int b) { return 0; } class testclass { int add(int a, int b) { return 0; } }; void * globalAdd = add; //OK void * classAdd = testclass::add; //エラー
暗黙のthisポインタがあるからキャストできないっていうのが当たり前なんだけど、
どーしてもキャストしたくなっちゃうときってあるよね。
俺がvoid* といったら void* なの。
こんなふうに定義して呼び出してあげると動くよ。
void* ForceConvertPointer(int* dummy,...) { return (void *)*(((unsigned int*)&dummy)+1); } void * classAdd = ForceConvertPointer(12345,testclass::add); //OK
もちろん、classAdd を呼び出すときに thisポインタをスタックの0引数として積んであげないとクラッシュするけどね。
enjoy!