首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >发送的参数与函数def不匹配

发送的参数与函数def不匹配
EN

Stack Overflow用户
提问于 2015-10-23 20:25:45
回答 1查看 72关注 0票数 0

我有以下场景,可以在Visual Linux10中运行,但不适用于C++上的GCC:

呼叫:

代码语言:javascript
代码运行次数:0
运行
复制
value& v;
wstring fn(L"");
char_conv::str_to_wstr( path, fn );

parse( v, ifstream( fn.c_str() ) ); //<-- ERROR

函数定义:

代码语言:javascript
代码运行次数:0
运行
复制
inline std::string parse(value& out, std::istream& is){...}

这是我得到的错误:

代码语言:javascript
代码运行次数:0
运行
复制
In member function ‘std::string PrintInvoker::extractParameter(const std::string&, picojson::value&)’:
error: no matching function for call to ‘std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(const wchar_t*)’
EN

回答 1

Stack Overflow用户

发布于 2015-10-23 20:32:55

std::idstream具有以下构造函数:

代码语言:javascript
代码运行次数:0
运行
复制
basic_ifstream();
explicit basic_ifstream( const char* filename,
            ios_base::openmode mode = ios_base::in );

explicit basic_ifstream( const string& filename,                                  
            ios_base::openmode mode = ios_base::in );

basic_ifstream( basic_ifstream&& other );

basic_ifstream( const basic_ifstream& rhs) = delete;

现在,当您调用返回wchar_t*fn.c_str()时,因为fn是一个wstrgin。正如你所看到的,这里没有接受wchar_t*的重载,所以编译器会给你一个错误。

看看我的MSVS2015副本,微软似乎添加了一个接受wchar_t*的构造函数,这就是为什么它在那里工作的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33302302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档