传递模板函数及其模板参数作为C ++中另一个函数的参数

时间:2018-04-02 03:10:58

标签: c++

我有一个项目,在那里我必须传递一个函数和他们的模板参数作为另一个函数的参数。你知道怎么做吗。

我想添加有关我的代码的更多详细信息:

template <typename T, typename functional>
void implement(int ind, Element<T> *ele, functional f) {

f(&ele[ind]);
return;
}
template <typename T>
void INIT_ADV_1D(Element<T> *ele) {

    Vect1D<T> *PHI = &ele->U[1];
    Vect1D<T> *U = &ele->U[2];
    for (int i = 0; i < ele->order + 1; i++) {
        U[i] = 1.e0;
        if (ele->xk(i) <= 0.5e0)
            PHI[0](i) = 1.e0;
        else
            PHI[0](i) = 0.e0;
    }
}
main (){
implement(0, model.Ele, INIT_ADV_1D);
}

我已经在我们的论坛中搜索过这个主题,但他们只是指导将一个函数作为其他函数的参数,而不是我的目标。

谢谢。

2 个答案:

答案 0 :(得分:0)

虽然问题不明确,但我认为需要这样的事情:

  template<typename types, typename functional> implement(types &data, functional f)
  {
     ... 
  }

  main()
  {
       implement(data, [](const data &d) { ...});
  }

如果要限制具有特定签名的函数类型,请使用函数头中的std :: function而不是函数类型。希望这有助于您入门。

答案 1 :(得分:0)

在您的代码中,f不会被指针调用。改为

f(&ele[ind])

这是否解决了这个问题?