मैं कुछ कोड है कि मैं करने के लिए सी ++ 11 को अद्यतन करने कर रहा हूँ जीसीसी 4.7 (3.1 से)std :: multiset :: iterator = NULL अब मान्य नहीं है?
का उपयोग कर मैं एक मल्टीसेट एक वर्ग के लिए एक निजी सदस्य के रूप में परिभाषित किया गया है:
multiset <Object*, objectcomp> objects_;
कोड में एक खंड है कि इस तरह दिखता है (p_q मल्टीसेट iterators, कि बुरा लाइन के बारे में खेद की एक जोड़ी है, को बदलने के लिए कि ऑटो के साथ, haha इंतजार नहीं कर सकता) है:
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
}
}
यह अब और संकलन नहीं होंगे। क्या आप इसे फिर से शून्य करने के लिए सेट नहीं कर सकते हैं? विकल्प क्या है? (nullptr या तो काम नहीं करता है)
यह ** कभी ** मान्य नहीं था। – ildjarn
ओह, ठीक है कि यह शर्मनाक है, हाहा –