C++ 通过boost::function\u base调用boost::function
我有一个无序的函数映射,在解析XML文件时应该对对象调用这些函数。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
我发现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:所以我仍然需要指定函数的符号,对吗?