如果你能建议一个更合适的标题,我会永远欠你的。
问题:我有一个本质上是递归的函数,它旨在从每个四边形中获取每个孩子并将其返回给原始调用者。问题是我每次运行程序时都会得到以下信息(在我的控制台窗口中):
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
我的目标是检索每个孩子作为指针。
这是调用者:
std::vector<Quad*> children = root->get_children_recursive(player_pos);
这是函数本身:
std::vector<Quad*> Quad::get_children_recursive(glm::vec3 player_pos) {
std::vector<Quad*> out_children;
if (children.size() != 0) {
for (int i = 0; i < children.size(); i++) {
Quad *child = &children[i];
std::vector<Quad*> childs_children = child->get_children_recursive(player_pos);
for (int j = 0; j < childs_children.size() - 1; j++) {
Quad *childs_child = childs_children.at(j);
out_children.emplace_back(childs_child);
}
}
}
if (this->should_draw(player_pos)) {
out_children.emplace_back(this);
}
return out_children;
}
如果您希望我提供更多代码或任何其他详细信息,我将非常乐意提供。
(每次我尝试使用调试器并且程序到达导致上述错误的行时,我都会收到 BSOD :O)
编辑:
标题:
class Quad {
public:
...
std::vector<Quad*> get_children_recursive(glm::vec3 player_pos);
...
protected:
private:
...
std::vector<Quad> children;
...
};