C++クラスメンバ関数の関数ポインタの使い方
Posted: 2011年8月04日(木) 20:09
f(x)=0などを数値的に問題(ブレント法など解法は何でもよいのですが、)を解く際には
対象となる関数を自在に操作できると便利です。このような用途に使うために、
関数ポインタというものの存在を知り使ってみました。
メイン文のと一緒に対象となる関数を走り書きして、ブレント法のクラスのソルバー関数
の引数に対象となる関数のアドレスを入れてやれば、任意の関数が処理できて便利である
ことが実感できました。
動作するものができたことを確認して、いざ、本格的に使用することを考えたのですが、
思わぬ問題に突き当たりました。
ただの関数の場合は、戻り値の型 (ポインタ名*) (引数の型)だけでよく、任意の関数
が扱えて便利でしたが、クラスのメンバ関数の場合には、名前空間、クラス名も指定
しなければなりません。結局、ブレント法のクラスに使用が想定されるクラスのクラス名
を列挙するようなプログラムになってしまいました。
代替案でもよろしいので、もうちょっとスマートに扱える方法をご存知でしたら、
ご教授いただければと思います。
対象となる関数を自在に操作できると便利です。このような用途に使うために、
関数ポインタというものの存在を知り使ってみました。
メイン文のと一緒に対象となる関数を走り書きして、ブレント法のクラスのソルバー関数
の引数に対象となる関数のアドレスを入れてやれば、任意の関数が処理できて便利である
ことが実感できました。
動作するものができたことを確認して、いざ、本格的に使用することを考えたのですが、
思わぬ問題に突き当たりました。
ただの関数の場合は、戻り値の型 (ポインタ名*) (引数の型)だけでよく、任意の関数
が扱えて便利でしたが、クラスのメンバ関数の場合には、名前空間、クラス名も指定
しなければなりません。結局、ブレント法のクラスに使用が想定されるクラスのクラス名
を列挙するようなプログラムになってしまいました。
代替案でもよろしいので、もうちょっとスマートに扱える方法をご存知でしたら、
ご教授いただければと思います。