函数指向具有可变参数列表的函数

时间:2011-09-08 12:45:26

标签: c++ pointers stl function-pointers

我们可以有一个函数指针指向一个使用变量参数列表的函数吗? 例如,假设我需要根据某些输入T'输入'在多个函数中选择一个函数。我可以使用像这样的STL地图吗??

template<typename T>
map<T, T (*)(T, ...)> func_map;

如果这是可能的,你可以告诉我这样做是正确的设计观点。


[编辑] 实际上我有一套算法函数,我有一个消息字段。我需要根据此消息上的几个字节值选择此算法函数。我正在考虑使用带有键值w.r.t的hash_map。指向该算法函数的指针。我希望按照性能非常快,实现这一点的方法是什么。

另外,我没有为此选择简单的if-else或switch块的原因是因为告诉我们需要执行的函数的值可以在稍后的某个时候引用其他函数。

2 个答案:

答案 0 :(得分:3)

是的,可以这样做,但你可能不应该这样做。可变函数存在许多问题,包括:

  • 所有传递的类型必须是POD类型或行为未定义
  • 无任何类型安全。如果传递错误的类型,则会导致未定义的行为。

我建议你找另一种方法。如果你详细说明为什么需要这样做,也许有人可以给你一个更好的选择。

答案 1 :(得分:0)

我个人认为变量参数列表是一个坏主意。它阻止您使用编译器进行类型检查,因此可以在生成任何目标代码之前更容易地找到错误。

因此,我建议您找到解决方法。