关于C++的cannot bind non-const lvalue reference of type...问题

关于C++的cannot bind non-const lvalue reference of type…问题

先看下面的代码,一个很简单的切分字符串并输出的函数。

#include 
using namespace std;
void test(string& str){
	cout<<str;
}
int main()
{
    string str = "aabcde";
	test(str.substr(0,3));
	
}

但当运行的时候会出现下面的错误
关于C++的cannot bind non-const lvalue reference of type...问题_第1张图片
这是由于我们的test函数的参数是一个非const引用类型,但是在main()函数中,我们直接调用了str的substr函数,这样相当与把一个临时变量当成参数传递进去,而编译器认为程序员无法对临时变量进行操作,从而产生了错误。

有下面的解决办法:
1、test(string& str) ==> test(const string& str),其余不变。
2、test(string& str) ==> test(string str)。
3、另外定义一个string类型变量接受substr()的返回值。

你可能感兴趣的:(c++)