gpt4 book ai didi

c++ - 为什么当我传递对这个函数的引用时它不起作用?

转载 作者:行者123 更新时间:2023-11-30 04:09:54 30 4
gpt4 key购买 nike

下面的代码:

void test(string &s){ // if the argument is "string s", it works
return test(s+',');
}

编译器报告找不到函数:test(std::basic_string)。

我认为编译器会创建一个临时字符串 (== s+','),我可以传递它的引用。但看来我错了。我不知道为什么我不能传递这个临时字符串的引用。

最佳答案

您不能将临时引用绑定(bind)到非常量引用。您可以通过 const 引用(或者,正如您指出的那样,通过值)

void test(string const & s){ // or string s
return test(s+',');
}

或者使用命名变量而不是临时变量

void test(string & s){
std::string s2 = s + ',';
return test(s2);
}

如注释中所指出的那样,这段代码具有未定义的运行时行为,不应在“真实”代码中使用;它的目的只是一个如何修复观察到的编译错误的最小示例

关于c++ - 为什么当我传递对这个函数的引用时它不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20908278/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com