如果我在 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 工具链。