n 変数の関数があるとします。
y = f (x1, ..., xn)
このような関数を引数として渡したいと思います。
Matlab では、ハンドルを使用した次の構築が利用可能です。
function y=func(x)
y = sin(x(0)) * cos(x(1)) //Any definition, not important
p_func=@func; //Define handle
ハンドルを別の関数のパラメーターとして使用することができます。
y = function2(p_func, n);
ここで、n は次元を表します...
C++ を使用してこのコードを書き直す方法は? 関数テンプレートで単純なモデルを使用します
temmplate <typename T>
T func( const T *arg, const short n) {return sin(arg[0]) * cos(arg[1])};
ここで、xi 引数は n 要素の 1 次元配列で表されます。問題は、この場合、関数テンプレートへのポインターを使用できないことです。
template <class T>
static T ( *pfunc ) ( const T *arg, const short n )
専門分野のみ...おそらく別のモデルがより適切かもしれません...助けてくれてありがとう...
備考: クラステンプレートが有用であることは知っています
template <typename T>
class Foo
{
T func( const T *args, const short n);
};
そして、この構築は機能します:
template <class T>
static T ( *pfunc ) ( const T *arg, const short n )
ただし、ライブラリの現在のモデルでは使用されていない可能性があります (これには影響しません)。