//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.
Tại sao vòng lặp thứ hai segfaulting, trong khi vòng lặp đầu tiên không?Dựa trên phạm vi cho các vòng lặp trong C++ 11 segfault, nhưng không thường xuyên đối với vòng lặp
Dereference con trỏ? Không có ý tưởng, chỉ cần suy nghĩ ra khỏi ass của tôi –
Để làm rõ, không có kinh nghiệm với C++ 11 được nêu ra, nhưng tại sao bạn không dereference trong vòng thứ hai? - Tôi giả định C++ tự động dereferences cho bạn? –
@ AK4749, 'cây' trong vòng lặp thứ hai là mỗi' Tree_NodeT * 'trong vectơ, trong đó trong vòng lặp đầu tiên, nó giống như một con trỏ tới' Tree_NodeT * '. – chris