在两个函数之间选择的函子
Functor for Choosing Between Two Functions
搜索C 函数语法的搜索带来了很多不同的结果,我认为我没有看到其中任何一个的需求。有些使用模板,有些使用单个类,另一些则使用多个类,而另一些则使用结构。我永远不确定我想做什么需要什么特定元素。所以现在,我想做的:
我有两个功能。他们都采用完全相同的参数,但命名方式不同,并且会返回不同的结果,尽管返回类型也相同,例如,
unsigned foo1(char *start, char *end);
unsigned foo2(char *start, char *end);
我只想根据布尔变量的值选择要调用的函数。我可以写一个谓词以在两者之间进行选择,但这似乎不是一个优雅的解决方案。如果是C,我会使用一个简单的功能指针,但是我被告知它们在C 中的工作状态不佳。
编辑:由于我无法控制的限制,在这种情况下,我无法使用C 11。
只需使用 std::function
:
std::function<unsigned int(char*, char*)> func = condition ? foo1 : foo2;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ function signature
// ...
unsigned int result = func(start, end);
另外,功能指针在C 中正常工作:
auto func = condition ? foo1 : foo2;
unsigned int result = func(start, end);
但是std::function
更灵活。
相关文章:
- 如何在"push_*()"和"emplace_*()"函数之间进行选择?
- 如何在不同类型的值之间进行选择以传递给多态函数?
- 在C++同名的顶级函数之间进行选择
- 如何让CMake在多个编译器之间进行选择?
- 有没有办法根据模板参数的类型在不同的类实现之间进行选择
- 使用STD :: String和字符数组之间的选择
- 根据编译时条件在类型之间选择类型的惯用方法
- 如何根据定义的字符串类型在“std::cout”和“std::wcout”之间进行选择
- 有没有一种方法可以在基于枚举的可变参数模板函数之间进行选择,这比将函数包装在结构中更简单
- 为什么在具有相同签名的模板化和非模板化函数之间进行选择时没有歧义?
- C++ 在列表和列表之间选择返回类型<<string>std::p air<string,string>>
- C 编译器如何在延期和异步执行std :: async之间进行选择
- 如何在map和undered_map之间进行选择
- 一般来说,如何在C++中的结构和类之间进行选择
- 在一维和二维数组之间进行选择
- unix中选择和轮询系统调用之间的功能差异
- 在模板功能和自动类型扣除之间进行选择
- 在两个函数之间选择的函子
- C 编译器可以在用户定义和编译器生成的复制构建器之间进行自由选择
- 随机选择一个 0 到 8 之间的数字,直到没有数字可以选择,然后重新开始