如何将实参传递给此形参

  • 本文关键字:形参 实参 c++
  • 更新时间 :
  • 英文 :


我在这里定义了一个函数

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),因此您的代码显然是不正确的。

要使其工作,您必须:

  1. 从你的函数返回一个std::string:

    string PalindromeFinder::truncateToLargestPalindrome(const string& inputString)
    

    cout << truncateToLargestPalindrome("djfklsevesdfjkf") << endl;
    
  2. 首先调用函数来修改一个局部变量,然后将该变量流式传输到cout:

    std::string str = "djfklsevesdfjkf";
    truncateToLargestPalindrome(str);
    cout << str << endl;
    

相关内容

  • 没有找到相关文章