Date: 2015/7/23 Cate: C++, cocos2d-x Tags: ,  

C++やってる人にとってはたぶん当たり前の話で僕がちゃんとC++勉強してないだけなんですが、

for(auto hoge : unko){
  // hogeの中身をいじる
}

ってコードを書いてて、hogeの中身をいじったつもりが変更されてなくてあれ?ってなんてたんですが、これだとhogeはunkoの要素のコピーになるわけですね。
hogeをいじりたいときは

for(auto& hoge : unko){
  // hogeの中身をいじる
}

というようにauto&ってやらんとダメでした。

なんかコピーされてんだろなーって思ってはいたんですが、auto&って書き方を知らなかったので結構ハマってしまいました。
もうちょっとちゃんとC++勉強せねば。

参考:range-based for loopsの要素の型について

Leave a Reply