これが問題です。この関数は、メンバー ベクトルの i 要素への参照を返すように記述したため、この要素を編集できます。コードは次のとおりです。
Letter& Literal::get (int i) const {
return lit_m.at (i); //Vector of Letter objects
}
しかし、g++ では、その要素を const 以外の参照に割り当てることはできません。
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 バージョンを宣言します。const と非 const のオーバーロードが許可されていないのではないかと心配していましたが、その const が引数リストを変更し、それを可能にすることがわかりました。