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