Я пытаюсь получить все листовые узлы из моей древовидной структуры. Код взят из ue4, поэтому просто относитесь к «TArray» как к обычному std :: Vector.
TArray<BSPNode *> * BSPNode::getLeafNodes()
{
TArray<BSPNode *> * collected = new TArray<BSPNode*>;
collectLeafNode(collected);
return collected;
}
void BSPNode::collectLeafNode(TArray<BSPNode *> * leafNodes)
{
if (leftNode == nullptr && rightNode == nullptr)
{
if (leafNodes != nullptr)
{
if (this != nullptr)
leafNodes->Add(this);
}
return;
}
if (leftNode != nullptr)
leftNode->collectLeafNode(leafNodes);
if (rightNode != nullptr)
rightNode->collectLeafNode(leafNodes);
return;
}
отладчик показывает, что нарушение доступа появляется в
if (leftNode == nullptr && rightNode == nullptr)
Вывод отладчика:
стек вызовов строка 95 if (rightNode != nullptr)
линия 82 if (leftNode == nullptr && rightNode == nullptr)
а также переменные.
Я понятия не имею, почему происходит сбой программы, это связано с использованием указателя «this»? Заранее спасибо :).
Задача ещё не решена.
Других решений пока нет …