假设我们有一个包含 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 个元素的一维数组表示。问题是在这种情况下不能使用指向函数模板的指针
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 )
但它可能不会在库的当前模型中使用(我不能影响这一点)。