gcc 4.7 (3.1 から) を使用して C++11 に更新するコードがいくつかあります。
クラスのプライベート メンバーとして定義された multiset があります。
multiset <Object*, objectcomp> objects_;
コードには、次のようなセグメントがあります (p_q は、マルチセット イテレータのペアです。その厄介な行について申し訳ありません。それを auto に置き換えるのが待ちきれません、笑):
void Terrain::removeObject(Object* obj){
pair<multiset<Object*, objectcomp>::iterator, multiset<Object*, objectcomp>::iterator> p_q;
multiset<Object*, objectcomp>::iterator p,q;
q = NULL;
p_q = objects_.equal_range(obj);
for(p = p_q.first; p != p_q.second; p++){
if(*p == obj) {q=p; break;}
}
if(q!=NULL){
... do stuff based on q no longer being null
}
}
これはもうコンパイルされません。イテレータを null に設定できなくなりましたか? 代替手段は何ですか?(nullptrも機能しません)