我是C ++的新手,我无法弄清楚这段代码有什么问题
string& GetAddonCmeterString(string& sid) {
ostringstream oss;
oss << "{";
oss << "currentValues : {sid : " << sid << "}";
oss << "}";
string& result = oss.str();
return result;
}
编译错误消息:
错误:'std :: __ 1 :: string&amp;类型的非const引用的初始化无效{aka std :: __ 1 :: basic_string,std :: __ 1 :: allocator&gt;&amp;}'来自类型'std :: __ 1 :: basic_string,std :: __ 1 :: allocator&gt;'的右值 串和放大器; result = oss.str();
答案 0 :(得分:2)
是否编译,
不要将指针或引用返回到局部变量!
result
完成时, GetAddonCmeterString
将被销毁并取消分配,您将返回一个不再存在的对象的内存地址!
你应该按值*:
返回字符串 string GetAddonCmeterString(string& sid) {
ostringstream oss;
oss << "{";
oss << "currentValues : {sid : " << sid << "}";
oss << "}";
return oss.str();
}
*字符串不会按值返回,但会是moved
,但由于您不熟悉C ++,为了便于讨论,请保持简单。