c++11 - C++ 如何以 符合同一形式模板的函数 作为参数?
大家讲道理
大家讲道理 2017-04-17 13:33:28
0
1
407

标题有点混乱。。我也不知道怎么描述好了,希望你们能看懂。。

例如现在有一组原型为同一形式的函数模板,把它们叫做funx()
它们都是T funx(T arg)的形式,但是函数体不同

// these called funx()

template <class T>
T fun1(T arg)
{ // do something }

template <class T>
T fun2(T arg)
{ // do something }

再设计一个函数,函数实现需要调用 符合以上形式模板 的函数

void do( funx ,/* some arguments */)
{
    funx();

    // do something
}

因为是函数模板,无法直接传递funa或者funb的函数指针 作为do()的参数

如何设计do()或者修改funx()来符合要求?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(1)
洪涛

你可以把呼叫函數的那個函數以模板的形式實現:`

template <typename Func>
void do(Func funx, /* other args */) {
    funx();
    // do something
}

在具體呼叫時直接呼叫即可

do(fun1<Type>);
do(fun2<Type>);
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板