Вернуть ссылку из класса к этому - PullRequest
12 голосов
/ 12 апреля 2010

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

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

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

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

Ответы [ 2 ]

25 голосов
/ 12 апреля 2010

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

8 голосов
/ 12 апреля 2010

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...