我有一个方法setValue(string& val),我需要调用一些默认值.
我想这样称呼它:
setValue("");
setValue("random value");
Run Code Online (Sandbox Code Playgroud)
但我用g ++得到以下错误: no matching function to call setValue(const char [10])
关于如何在创建临时字符串对象旁边做到这一点的任何想法?
它有效,但我觉得不方便:
string temp("random value");
setValue(temp);
Run Code Online (Sandbox Code Playgroud)
问题是string&不会绑定到临时对象,只会绑定到非const 命名对象(标准语言中的非常量左值).您必须将对象命名为传递给函数,就像对temp变量一样.
一种解决方法是使用const对字符串的引用并直接将字符串文字传递给它.这是因为1)string有一个非显式构造函数,它接受const char*2)const char [10]将衰减const char*.