彼らは私が前に行って見たことがないものを使用して、簡単に情報を見つけることができませんでした:私は推測しているC++で関数の引数として '関数ポインタ'または '関数への参照'は何が起こっていますか? <a href="http://www.nr.com/" rel="nofollow noreferrer">Numerical Recipes</a>で
void fun(std::vector<double> derivatives(const double, const std::vector<double> &)) { ...; derivatives(...); ...; }
は(これが正しい)を参照して、関数を渡していますか?なぜこれは関数ポインタを使うほうが好都合でしょうか?どのような状況でそれぞれの方法が優先されますか?
私は第2号を持っています: 初めてこの関数を呼び出すと、プログラムは数秒間ハングします。今、私は、自分自身を渡す引数の関数は、関数ポインタとは異なる機能を呼び出すすなわち
vector<double>(*pfI)(const double) = NULL;
...
pfI = pointedToFun;
void argFun() { ...; deRefPointedFun = (*Theta::pfI)(t); deRefPointedFun(); }
参照/ポインタ機能の2つのレベルを処理するための良い方法は何ですか?
追加:問題の構文は、* -syntaxを使用してより明確に見えます。私はそれが彼らがそれを使った理由だと思う。 –
申し訳ありません - それは理にかなっています。最初の呼び出しが機能することを指摘する前にプログラムがハングする理由を知っていますか(私はトレースを行いました。 – bias
私はそれが関数へのポインタの問題だとは思わない。問題を示す最小限のコードをここに掲示しておかなければなりません。 –