C++11 で範囲ベースの for ループがある場合、
for(auto const &ticket : ticketStrip->tickets()) {
ticket->ClearCalled();
}
チケットが const としてマークされていないのに、ClearCalled() など、ループ内のチケットで非 const メソッドを呼び出せるのはなぜですか?
void Ticket::ClearCalled() { ... }
ClearCalled は実際にチケットの内部を変更するため、const としてマークするべきではありません。私は使用する必要があることを知っています
auto &ticket
しかし、私はちょうど試しました
auto const &ticket
そしてコンパイラはそれを受け入れました。
チケットの種類は
boost::shared_ptr<AbstractMainStageTicket>
そしていくつかの新しいコードを入れます:
ticket->ClearCalled();
ticket.reset();
リセットが const ではないというエラーにコンパイラがフラグを立てるようにします。
ご協力いただきありがとうございます!
Android 用の GNU 4.6 ツールチェーンを使用しています。