![](/img/trans.png)
[英]invalid initialization of non-const reference of type ‘std::string&
[英]How fix compile error: invalid initialization of non-const reference of type 'std::__1::string&
我是 C++ 新手,不知道这段代码有什么问题
string& GetAddonCmeterString(string& sid) {
ostringstream oss;
oss << "{";
oss << "currentValues : {sid : " << sid << "}";
oss << "}";
string& result = oss.str();
return result;
}
编译错误信息:
错误:类型为 'std::__1::string& {aka std::__1::basic_string, std::__1::allocator >&}' 的非常量引用的无效初始化来自类型为 'std::__1 的右值::basic_string, std::__1::allocator >' string& result = oss.str();
编译与否,
不要返回指向局部变量的指针或引用!
当GetAddonCmeterString
完成时, result
将被破坏和GetAddonCmeterString
分配,您正在返回一个不再存在的对象的内存地址!
您应该按值返回字符串*:
string GetAddonCmeterString(string& sid) {
ostringstream oss;
oss << "{";
oss << "currentValues : {sid : " << sid << "}";
oss << "}";
return oss.str();
}
*字符串不会按值返回,而是会被moved
,但是因为您是 C++ 新手,所以为了讨论起见,让我们保持简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.