c ++:返回对临时的引用

Jér*_*yet 0 c++ reference

我制作了这个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班?

编辑:这是一个学校运动,我不能改变原型

4pi*_*ie0 5

convert.str();
Run Code Online (Sandbox Code Playgroud)

这将返回一个std::stringOperand::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)