指向具有可变参数列表的函数的函数指针
function pointer to a function which has variable argument list
我们可以有一个函数指针指向一个函数使用可变参数列表?例如,假设我需要根据某个输入T 'input'从许多函数中选择一个函数。我可以使用STL映射这样的东西吗??
template<typename T>
map<T, T (*)(T, ...)> func_map;
如果这是可能的,你能告诉我这样做将是正确的事情,从设计的角度。
[编辑]实际上我有一组算法函数和一个消息字段。我需要根据这个msg上的几个字节值来选择这个算法函数。我正在考虑使用hash_map与一个键值w.r.t.指针的算法函数。我希望在性能方面非常快,有什么方法可以实现这一点。
此外,我没有选择简单的if-else或switch块的原因是因为告诉我们需要执行的函数的值可以在稍后点引用其他函数。
是的,可以这样做,但您可能不应该这样做。可变函数有很多问题,包括:
- 传递的所有类型必须是POD类型,否则行为未定义
- 没有类型安全。如果传递错误的类型,将导致未定义的行为。
我个人认为变量参数列表是一个坏主意。它可以防止您使用编译器进行类型检查,因此可以更容易地在生成任何目标代码之前找到错误。
相关文章:
- 如何在C++中泛化调用函数列表?
- 不带初始值设定项的构造函数列表,其中包含带有已删除构造函数的对象
- 具有可变参数的std ::函数列表如何工作
- 空向量的构造函数列表初始化
- C++ 中的构造函数列表
- 为什么初始化构造函数列表参数时会发生异常?
- 完美转发函数以构建函数列表类
- 如何在 c++ 中将函数列表应用于字符串
- 什么是结构开头的函数列表指针,称为 c++
- <函数列表>的多重定义
- 指向函数(列表)的指针
- 如何使用Boost预处理器获取类函数可访问的函数列表
- 避免使用容器调用函数列表
- 提取头文件中的函数列表
- 提升::p tr_vector 成员函数列表
- 完整的函数列表,来自c ++的MS Word命令
- 获取DLL中定义的函数列表
- 在运行时获取名称空间中的函数列表
- 如何在类构造函数列表中初始化结构
- 在c++中使用函数列表来调用async