1

我有一个 unordered_map 函数,在解析 XML 文件时应该在对象上调用这些函数。
我发现 boost::function 有一个名为 boost::function_base 的基类,但是正如预期的那样,我无法调用它,因为我没有函数的签名。
由于所有这些函数都是 setter 函数,我可以保证它们返回 void 并且只有一个未知类型的参数。
除了我试图避免的 if-else-if 分支之外,有没有更好的方法来解决类型?

4

2 回答 2

2

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

于 2010-09-12T18:30:19.723 回答
0

boost::function仅用于编译时多态性。为什么不直接使用常规函数指针?IE

typedef void (*function_type)(void *);
于 2010-09-12T18:27:13.260 回答