我在这里定义了一个函数
void PalindromeFinder::truncateToLargestPalindrome(string& inputString)
,当我想测试这个函数时,我使用
cout<<truncateToLargestPalindrome("djfklsevesdfjkf")<<endl;
然后编译器给了我这个错误
PalindromeFinder.cpp:19:36: error: non-const lvalue reference to type 'string'
(aka 'basic_string<char, char_traits<char>, allocator<char> >') cannot
bind to a value of unrelated type 'const char [8]'
cout<<truncateToLargestPalindrome("racecar")<<endl;
^~~~~~~~~
./PalindromeFinder.h:22:45: note: passing argument to parameter here
void truncateToLargestPalindrome(string&);
不能将字符串文字传递给非const string&
参数。编译器需要创建一个临时string
对象,但是临时对象不能绑定到非const左值引用,只能绑定到const左值引用或右值引用。因此编译器错误。
您需要将参数更改为const
引用,以便临时string
可以绑定到它。然后你可以传递字符串字面值给它。
同样,你的函数没有返回任何东西,所以你不能把它传递给一个流<<
操作符(或任何其他操作符,就此而言)。
试试这个:
string PalindromeFinder::truncateToLargestPalindrome(const string& inputString)
{
string outputString = inputString;
// modify outputString as needed...
return outputString;
}
cout << truncateToLargestPalindrome("djfklsevesdfjkf") << endl;
如果您想将函数的结果传递给<<
运算符,则该函数必须实际返回一些东西。在您当前的实现中,它不返回任何值(void
),因此您的代码显然是不正确的。
要使其工作,您必须:
-
从你的函数返回一个
std::string
:string PalindromeFinder::truncateToLargestPalindrome(const string& inputString)
cout << truncateToLargestPalindrome("djfklsevesdfjkf") << endl;
-
首先调用函数来修改一个局部变量,然后将该变量流式传输到
cout
:std::string str = "djfklsevesdfjkf"; truncateToLargestPalindrome(str); cout << str << endl;