error C2664: “find_char”: 不能将参数 1 从“const char [14]”转换为“std::string &
清泛原创
出错代码:
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
//const引用形参举例
//非const引用形参只能与完全同类型的非const对象关联
std::size_t find_char(string &s,char c)
{
string::size_type i = 0;
while(i != s.size() && s[i] != c)
++i;
if(i == s.size())
return string::npos;
else
return i;
}
int main(int argc, char *argv[])
{
//字面值常量为const对象,调用出错
if(find_char("Hello, world.",'.') != string::npos)
{
cout<<"a sentence."<<endl;
}
return 0;
}
解决方法:如果函数不修改相应实参,应该将引用形参定义为const引用,这样字面值常量、const对象也能调用此函数,避免不必要的限制。
上一篇:error LNK2001: unresolved external symbol "class std::basic_ostream
下一篇:error C2512: “Foo”: 没有合适的默认构造函数可用