У меня есть следующий член нечто класса.
foo &foo::bar()
{
return this;
}
Но я получаю ошибки компилятора. Какую глупую вещь я делаю неправильно?
Ошибка компилятора (gcc): ошибка: недопустимая инициализация ссылки неконстанты типа 'foo&' от временного файла типа 'нечто* константа'
это
указатель. Таким образом, должно быть return * this;
Как указывает Навин out, вам нужно вернуть * this
.
Просто небольшой совет: способ выяснить, что означают несколько непонятные ошибки компилятора, - это попытаться скомпилировать на другом компиляторе, чтобы увидеть, есть ли лучшее сообщение. Например, вы можете использовать Comeau online .
В этом случае это дает:
"ComeauTest.c", line 7: error: initial value of reference to non-const must be an
lvalue
return this;
^
Не уверен, что в этом случае лучше, но в некоторых случаях сообщения намного лучше.