Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指向具有变量参数列表的函数的函数指针_C++_Pointers_Stl_Function Pointers - Fatal编程技术网

C++ 指向具有变量参数列表的函数的函数指针

C++ 指向具有变量参数列表的函数的函数指针,c++,pointers,stl,function-pointers,C++,Pointers,Stl,Function Pointers,我们能有一个函数指针指向一个使用可变参数列表的函数吗? 例如,假设我需要根据某个输入T“input”在多个函数中选择一个函数。我可以用STL地图吗 template<typename T> map<T, T (*)(T, ...)> func_map; 模板 映射函数映射; 若这是可能的,你们能告诉我这样做将是正确的事情做设计的角度 [编辑] 实际上,我有一组算法函数和一个消息字段。我需要根据此消息上的几个字节值选择此算法函数。我在考虑使用hash_-map和一个键

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

template<typename T>
map<T, T (*)(T, ...)> func_map;
模板
映射函数映射;
若这是可能的,你们能告诉我这样做将是正确的事情做设计的角度


[编辑] 实际上,我有一组算法函数和一个消息字段。我需要根据此消息上的几个字节值选择此算法函数。我在考虑使用hash_-map和一个键值w.r.t,即指向该算法函数的指针。我想以非常快的速度实现性能,可以采用什么样的方法来实现这一点


另外,我之所以不选择simple if else或switch block,是因为告诉我们需要执行的函数的值可以在稍后引用其他函数。

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

  • 传递的所有类型必须是POD类型,否则行为未定义
  • 没有任何类型的安全性。如果传递了错误的类型,将导致未定义的行为

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

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


因此,我建议你想办法解决这个问题。

我突然想到了这个问题。好奇和wi-fi,所以这个问题。Sry还没有试过:(注意,没有模板typedef,所以你写的东西实际上并不存在,但原则上答案是“是”@Marcelo-谢谢Marcelo。我不知道有一个网站可以如此轻松地运行代码。这将是我最常使用的书签。人们一直告诉我,我应该写这样的东西
std::cout C++0x可能会通过用户定义的文字产生一个非常好的解决方案。类似
“(%g,%g):%s\n”F
(注意
F
后缀)可以解析为一个函子,该函子包含四个类型为double、double、double和const char*的参数。当然,这无助于定义OP的
func\u映射。
。事实上,我很难想出一个可行的替代方法。@marcelocontos:你知道吗?@Daniel:知道,这是对
的明显改进