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