Вот проблема. Я написал эту функцию, чтобы она возвращала ссылку на элемент i вектора-члена, поэтому этот элемент можно редактировать. Вот код:
Letter& Literal::get (int i) const {
return lit_m.at (i); //Vector of Letter objects
}
Но g ++ не позволит мне присвоить этот элемент неконстантной ссылке:
g++ -o literal.o -c literal.cpp
literal.cpp: In member function ‘Letter& Literal::get(int) const’:
literal.cpp:34: error: invalid initialization of reference of type ‘Letter&’ from expression of type ‘const Letter’
Как это можно решить? Моя идея состоит в том, чтобы создать функцию, подобную функции at () векторов, поэтому она будет const, поскольку она не редактирует сам объект, но должна позволить мне редактировать возвращенный объект ... Возможно ли это? *
РЕШЕНО: Мне просто пришлось перегрузить функцию :), поэтому объявляем постоянную и неконстантную версии. Я боялся, что const и неконстантная перегрузка недопустимы, но я увидел, что это const меняет список аргументов, делая это возможным.