//fills my vector with pointers.
//(some are pointing places, others are set to nullptr
vector<Tree_NodeT*> xml_trees {Build_Tree_List(program_options->Get_Files())};
//time to print them
for (auto tree = xml_trees.begin(); tree != xml_trees.end(); ++tree){
if (*tree){
(*tree)->Print(std::cout,4);
}
}
//this worked! No Segfaults!
//time to print them again
for (auto tree : xml_trees){
if (tree){
tree->Print(std::cout,4);
}
}
//Crash! Segfault.
दूसरा लूप segfaulting क्यों है, जबकि पहला लूप नहीं है?सी ++ 11 सेगफॉल्ट में लूप के लिए रेंज-आधारित, लेकिन नियमित रूप से लूप
पॉइंटर अव्यवस्था? कोई विचार नहीं, बस मेरे गधे से बाहर सोच रहा है –
स्पष्टीकरण के लिए, अभी तक सी ++ 11 के साथ कोई अनुभव नहीं है, लेकिन आप दूसरे लूप में क्यों डरते नहीं हैं? - मैं आपके लिए सी ++ ऑटो ड्रेरेंस मान रहा हूं? –
@ AK4749, दूसरे लूप में 'पेड़' वेक्टर में प्रत्येक 'Tree_NodeT * 'है, जहां पहले लूप में, यह' Tree_NodeT * 'के सूचक के समान है। – chris