より適切なタイトルを提案していただければ、私は永遠にあなたのお世話になります。
問題: 私は本質的に再帰的な関数を持っています。それは、各クワッドから各子を取得し、元の呼び出し元に返すことを目的としています。問題は、(コンソール ウィンドウで) プログラムを実行するたびに次のように表示されることです。
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;
...
};