从类返回引用

Tho*_*mas 13 c++ return reference this

我有类foo的以下成员.

foo &foo::bar()
{
   return this;
}
Run Code Online (Sandbox Code Playgroud)

但我收到编译器错误.我做错了什么蠢事?

编译器错误(gcc):错误:从类型为'foo*const'的临时类中初始化'foo&'类型的非const引用

Nav*_*een 26

this是一个指针.所以它应该是return *this;


JRL*_*JRL 8

正如Naveen指出的那样,你需要回归*this.

只是一个快速的提示:一种方法来弄清楚有些模糊的编译器错误意味着尝试编译不同的编译器,看看是否有更好的消息.例如,您可以在线使用Comeau.

在这种情况下,它给出:

"ComeauTest.c", line 7: error: initial value of reference to non-const must be an
          lvalue
     return this;
            ^
Run Code Online (Sandbox Code Playgroud)

在这种情况下不确定它是否更好 - 但在某些情况下,消息更好.

  • 事实上,MSVC 2008回归,"错误C2440:'返回':无法从'foo*const'转换为'foo&'",我认为这很清楚. (2认同)