C/C++C++のクラスのメンバ関数を、関数ポインタ指定して外から呼ぶのを何も考えずにやろうとすると、呼び出すことが出来ずに嵌まる。いうと、クラスの関数ポインタは、インスタンスごとに作られてるわけではないから。どのインスタンスの関数であるのか知るために、内部的にインスタンスのポインタ(thisポインタ)をメンバ関数の引数に与えている。してもクラスメンバ関数のポインタ呼び出しをしたい場合には、専用の呼び出し方があり、その呼び方で呼ぶ必要がある。すると、本来不要である依存が発生する場合がある。-依存をなくすために、違う方法を考えてみる。インスタンスごとに別の関数ポインタを持つようにstaticなメンバ関数にする。staticであれば、普通に関数ポインタで呼び出せる。関数内で、自身のstaticなメンバにしかアクセス出来なくなり困ることになる。そこで、static関数の引数に、自身のインスタンスのvoidポインタを渡すようにする。関数内でメンバ変数を触るときは、引数で渡したインスタンスへのポインタを自分の型にキャストして触ればよい。これで依存関係も気にせずに、クラスのメンバ関数を関数ポインタで呼び出せる。キャスト出来るデータが渡されていることが前提となるし、voidポインタを使うと型情報を頼りにコードを読むのが難しくなるので、これで本当に正しいのかはまた考える。書かないためには(Java)StackOverflowから。更新は不定期ですので、登録をおすすめします。最近はJavascriptを少し触っている。オオサカ堂スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。