既存のツリー オブジェクトを文字列に変換する関数を作成しました。文字列のフォーマットは
parent ( child1 ) ( child2 ( childOfChild2 ) )
プログラムは文字列を正しく出力し、他の作業を行いますが、でクラッシュします
Segmentation fault (core dumped)
これは関数です(getTree(this->root)
ツリー全体を出力します):
template <typename T>
string Tree<T>::getTree(const Node<T>& node) {
if (node.isLeaf()){
return to_string(node.value);
}
vector<future<string>> results; //each element represents a subtree connected to "node"
for (auto child:node.children){
results.push_back(move(async(&Tree<T>::getTree,this,ref(*child))));
}
string children("");
for (auto& result:results){
children+=string(" (") + result.get()+ string(") "); //this creates Segmentation fault, but the output is correct
//children+=string(""); //this does not create Segmentation fault
//children+=string("foo"); //this creates Segmentation fault
}
return to_string(node.value)+children;
}
変数に関する情報:
vector<shared_ptr<Node>> children;