Also muss ich eine .dot-Datei schreiben, um ein graphviz-Bild von einem sortierten avl-Baum zu machen. Method Header wurde zur Verfügung gestellt und ich muss damit auskommen.Stringstream zur Zeichenfolgenrückgabe?
Hauptfrage ist, wie ich die build_dot_content() -Methode richtig aufrufen, wenn es Teil von std :: string ist?
void avl::dump_dot(std::string filename){
string s;
ofstream fptr;
fptr.open(filename);
fptr<<"digraph AVL {"<<endl<<"graph [dpi=150];"<<endl<<"nodsep=0.3;"<<endl;
fptr<<"ranksep=0.2;"<<endl<<"margin=0.1"<<endl<<"node [shape = circle fontname=\"Helvetica\"];"<<endl;
fptr<<"edge [arrowsize=0.8]"<<endl<<endl;
stringstream o;
s=string build_dot_content(o, root, 1);
fptr<<s<<endl<<"}"<<endl;
}
std::string build_dot_content(std::stringstream &o, avl_node *e, int i) {
o<<"node"<<i<<" [label =\""<<e->element<<"\"];"<<endl;
int iL = 2*i;
int iR = 2*i+1;
if(e->left != nullptr){
o<<"node"<<i<<" -> node"<<iL<<";"<<endl;
build_dot_content(o, e->left, iL);
}
if(e->right != nullptr){
o<<"node"<<i<<" -> node"<<iR<<";"<<endl;
build_dot_content(o, e->right, iR);
}
string s;
s = o.str();
return s;
}
Bitte erweitern oder reword "Hauptfrage ist, wie ich die build_dot_content() -Methode richtig aufrufen, wenn es Teil von std :: string ist " Momentan kann ich nicht viel davon verstehen. – user4581301
das ist der Fehler, den ich bekomme. avl.cpp: 216: undefined reference to 'avl :: build_dot_content (std :: basic_stringstream, std :: allocator > &, avl_node *, int)‘ collect2: Fehler: ld returned 1 exit status –
Entschuldigung für die Nitpicking aber 'fptr'? Dateizeiger? Hä? 'fstream'! =' FILE * '. Es ist kein Zeiger, es ist ein Stream-Objekt. – emlai