我制作了这个c ++代码:
std::string const & Operand::toString() const
{
std::ostringstream convert;
convert << this->value;
return convert.str();
}
Run Code Online (Sandbox Code Playgroud)
编译器告诉我: returning reference to temporary
难道我被迫把convert.str()我的Operand班?
编辑:这是一个学校运动,我不能改变原型
convert.str();
Run Code Online (Sandbox Code Playgroud)
这将返回一个std::string在Operand::toString()返回后将被销毁的对象 .因此,这是临时变量,其寿命仅限于此函数的范围.你应该string通过值返回它自己:
std::string Operand::toString() const
{
std::ostringstream convert;
convert << this->value;
return convert.str();
}
Run Code Online (Sandbox Code Playgroud)
要么:
const std::string Operand::toString() const
{
std::ostringstream convert;
convert << this->value;
return convert.str();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3330 次 |
| 最近记录: |