Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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++ 通过boost::function\u base调用boost::function_C++_Boost_Boost Function - Fatal编程技术网

C++ 通过boost::function\u base调用boost::function

C++ 通过boost::function\u base调用boost::function,c++,boost,boost-function,C++,Boost,Boost Function,我有一个无序的函数映射,在解析XML文件时应该对对象调用这些函数。 我发现boost::function有一个名为boost::function_base的基类,但正如预期的那样,我无法调用它,因为我没有该函数的签名。 由于所有这些函数都是setter函数,我可以保证它们返回void,并且只有一个未知类型的参数。 除了我试图避免的if-else-if分支之外,还有其他更好的方法来解析类型吗?boost::function仅针对编译时多态性而设计。为什么不使用常规函数指针呢?即 typedef v

我有一个无序的函数映射,在解析XML文件时应该对对象调用这些函数。
我发现boost::function有一个名为boost::function_base的基类,但正如预期的那样,我无法调用它,因为我没有该函数的签名。
由于所有这些函数都是setter函数,我可以保证它们返回void,并且只有一个未知类型的参数。

除了我试图避免的if-else-if分支之外,还有其他更好的方法来解析类型吗?

boost::function
仅针对编译时多态性而设计。为什么不使用常规函数指针呢?即

typedef void (*function_type)(void *);

使用boost::variant是最好的方法。无论如何,你怎么可能调用一个参数类型未知的函数呢?

+1秒。变体知道存储的是什么类型,所以他可以避免if-else-if分支。@Johannes Schaub-litb:但是我怎么能调用这个函数呢?“我仍然需要知道我正在解决的类型。”卓尔调查探访。boost.variant手册有相关信息。@Johannes Schaub-litb:所以我仍然需要指定函数的符号,对吗?