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'
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:
Not sure it's better in this case - but in some cases the messages are way better.
this
is a pointer. So it should bereturn *this;