c – 如何使用std :: stoi创建std :: function作为方法参数作为
发布时间:2020-12-16 05:19:07 所属栏目:百科 来源:网络整理
导读:我想使用std :: function作为方法的参数,并将其默认值设置为std :: stoi. 我尝试了以下代码: void test(std::functionint(const std::string str,size_t *pos,int base) inFunc=std::stoi) 不幸的是我收到以下错误: no viable conversion from 'overloaded
我想使用std :: function作为方法的参数,并将其默认值设置为std :: stoi.
我尝试了以下代码: void test(std::function<int(const std::string& str,size_t *pos,int base)> inFunc=std::stoi) 不幸的是我收到以下错误: no viable conversion from '<overloaded function type>' to 'std::function<int (const std::string &,size_t *,int)>' 我设法通过添加创建专用方法进行编译. #include <functional> #include <string> int my_stoi(const std::string& s) { return std::stoi(s); } void test(std::function<int(const std::string&)> inFunc=my_stoi); 第一个版本有什么问题? 解决方法
对于字符串和wstring,有两个stoi重载.不幸的是,在获取指向函数的指针时,没有方便的方法来区分它们.
您可以转换为所需的重载类型: void test(std::function<int(const std::string&)> inFunc = static_cast<int(*)(const std::string&,size_t*,int)>(std::stoi)); 或者你可以将它包装在lambda中,这类似于你所做的但没有引入不需要的函数名: void test(std::function<int(const std::string&)> inFunc = [](const std::string& s){return std::stoi(s);}); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – Rails – 添加不在模型和更新模型属性中的
- reactjs – React:和之间的区别
- vb.net – 使用appsettings,但“ConfigurationSettings”方
- 从零学习Swift<4>
- 常用正则表达式详解
- 如何使用jersey编写XML MessageBodyWriter提供程序
- c# – 使用JNI AndroidJNI.GetMethodID与字符串参数统一
- AJAX核心XMLHTTPRequest对象
- objective-c – 如何在iOS上模拟HTTP表单(POST)提交
- React native ListView 增加顶部下拉刷新和底下点击刷新