(Вы должны, вы знаете, просто использовать std::list
..., который не предлагает эту операцию по причине ...)
Причина, по которой вы возвращаетесь int&
означает, что тот, кто пишет mylist[i] = 42
, на самом деле изменит содержимое списка.
Однако вы получаете значение, используя помощник getValue
, который на основании сообщения об ошибке возвращаеткопия.Компилятор, проанализировав типы данных, обнаружил вашу логическую ошибку.Если вы хотите иметь возможность изменять фактические данные списка, то вы должны возвращать ссылку на фактические данные списка, а не копию.
Таким образом, getValue
также должен возвращать int&
,как подсказывает Филипп.