【发布时间】:2016-02-10 04:06:32
【问题描述】:
我有一个可以编译的代码,它看起来像:
void test1(const std::string &name)................
test1("myName");
但是,如果我将 const 从声明中删除为:
void test2(std::string &name)................
test2("myName");
代码无法编译。
为什么const std::string 让它编译?据我了解,将调用相同的隐式构造函数将char * 转换为std::string。
我正在使用 Visual Studio 2013,以防这可能与答案有关。
【问题讨论】:
-
电话
test1("myName");也不是吗? -
@AhmedAkhtar 是的,对不起,我正在调整我的代码以使其简短,我错过了这个细节,谢谢!
-
解决编译器错误的另一种方法是将第二种情况下的函数调用设为
test1(std::string("myName"));。