Возвратить ссылку из класса в это

У меня есть следующий член класса foo.

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

Но я получаю ошибки компилятора. Какая глупость я делаю неправильно?

Ошибка компилятора (gcc): ошибка: недействительная инициализация неконстантной ссылки типа 'foo &' из временного типа 'foo * const'

Ответ 1

this - указатель. Поэтому это должно быть return *this;

Ответ 2

Как указывает Навейн, вам нужно вернуть *this.

Просто быстрый подсказку: способ выяснить, какие несколько неясные ошибки компилятора означают, - попытаться скомпилировать другой компилятор, чтобы узнать, есть ли лучшее сообщение. Например, вы можете использовать Comeau в Интернете.

В этом случае он дает:

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

Не уверен, что это лучше в этом случае, но в некоторых случаях сообщения лучше.