Return reference from class to this

怎甘沉沦 提交于 2019-12-21 03:41:01

问题


I have the following member of class foo.

foo &foo::bar()
{
   return this;
}

But I am getting compiler errors. What stupid thing am I doing wrong?

Compiler error (gcc): error: invalid initialization of non-const reference of type 'foo&' from a temporary of type 'foo* const'


回答1:


this is a pointer. So it should be return *this;




回答2:


As Naveen points out, you need to return *this.

Just a quick tip though: a way to figure out what somewhat obscure compiler errors mean is to try compiling on a different compiler to see if there is a better message. For example, you can use Comeau online.

In this case it gives:

"ComeauTest.c", line 7: error: initial value of reference to non-const must be an
          lvalue
     return this;
            ^

Not sure it's better in this case - but in some cases the messages are way better.



来源:https://stackoverflow.com/questions/2621650/return-reference-from-class-to-this

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!