将可变参数解析为函数指针

用户1100264

Windows 10、Visual Studio 2019、C++17:

编译错误:无法将参数 2 从 'int (__cdecl *)(int)' 转换为 '...'

////////////////////////////////////////////////////////////////////
// This is the templated function that becomes a variadic argument
//
template <typename siz> 
int func(siz size)
{
    // ...
    // ...
    return 0;
}
///////////////////////////////////////////////////////////
// This is the function that uses variadic arguments
//
int usefunc(int option, ...)
{
    // ...
    // ...
    return 0;
}

int main()
{
    int result;

    result = usefunc(0, func); // ** int usefunc(int,...)': cannot convert argument 2 from 'int (__cdecl *)(int)' to '...' **
                               // Context does not allow for disambiguation of overloaded function
    return result;
}    

没有模板 (int func(int size) ) 代码编译正常。如何修改它以使编译器理解可变参数?

杰达兹

该问题func被视为函数指针,但C++ 中不允许指向模板函数的指针

您需要指定您在引用时计划使用的类型func,例如:

result = usefunc(0, func<int>);

您可以使用decltype来引用变量的类型,以更加灵活:

result = usefunc(0, func<decltype(result)>);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

以指针为参数的可变参数函数

以成员函数指针为参数的可变参数模板

将可变参数模板参数传递给可变函数

C ++将可变参数模板参数扩展为语句

将可变参数函数参数转发到std :: function对象

如何将可变参数函数参数转换为数组?

可变参数函数到函数指针

将可变长度数组从csv解析为struct

Unix将可变的命名值解析为单独的行

以可变参数函数为参数的函数

是否可以将可变数量的参数传递给函数?

如何将可变参数传递给虚函数

将可变长度作为参数并返回元组的函数

可变参数和函数指针向量

将可变数量的参数传递给函数,然后使用这些参数在函数中调用函数

函数指针参数的可变参数模板参数推导

从以指针为参数的函数返回指针

如何将可变函数参数作为参数传递给另一个函数?

如何将可变参数函数的其余参数传递给另一个函数?

如何将可变参数传递给基于参数数量调用特定函数的函数?

将可变参数模板函数参数传递给另一个函数

如何制作解析可变参数的函数?

Boost phoenix可变参数函数解析

具有可变参数模板参数的函数指针

模板参数-具有可变参数的函数指针

可变参数模板函数确定函数指针的返回类型

如何将可变参数模板成员函数的参数存储到向量中?

将可变函数参数传递给 PHP 中的另一个函数

如何在C ++中将可变参数函数与另一个函数消除歧义