Problem mit einem Binärbaum
-
Hallo,
ich bin noch ziemlicher Anfänger in Sachen C++ und habe mich jetzt mal an einen Binärbaum herangewagt.Ich wollte eine Texdatei einlesen und diese in einem Binärbaum ausgeben, komme aber nicht so ganz weiter, wär super wenn mir jemand helfen könnte.
Hier mal mein Code:
Ausschnitt aus der ersten cpp-Datei:
#include "BinarySortTree.h" #include "SortTreeElement.h" BinarySortTree::BinarySortTree(void) { temp_input = ""; temp_firstName = ""; temp_lastName = ""; temp_nr = ""; pos = 0; find = 0; } BinarySortTree::~BinarySortTree(void) { } void BinarySortTree::fillList(void) { do { readNwrite_firstName(); readNwrite_lastName(); readNwrite_nr(); inLast(); if (temp_input.at(pos) == 'ÿ') { temp_input.clear(); break; } } while(temp_input.at(pos) != 'ÿ'); } void BinarySortTree::readNwrite_firstName(void) { find = temp_input.find_first_of(";"); temp_firstName.insert(0, temp_input, 0, find); temp_input.erase(0, find+1); } void BinarySortTree::readNwrite_lastName(void) { find = temp_input.find_first_of(";"); temp_lastName.insert(0,temp_input,0,find); temp_input.erase(0, find+1); } void BinarySortTree::readNwrite_nr(void) { temp_nr.push_back(temp_input.at(pos)); temp_input.erase(0,2); } void BinarySortTree::insertLast(SortTreeElement* le_neu) { if (!head) { this->head = le_neu; } else this->last()->setNext(le_neu); } void BinarySortTree::inLast(void) { SortTreeElement* neu = new BinarySortTree(temp_firstName, temp_lastName, temp_nr); insertLast(neu); temp_firstName.clear(); temp_lastName.clear(); temp_nr.clear(); }
die dazugehörige h-Datei:
#pragma once #include "SortTreeElement.h" #include <fstream> #include <string> class BinarySortTree { public: enum TRAVERSART {PREORDER, INORDER, POSTORDER} TA; public: BinarySortTree(); virtual ~BinarySortTree(void); void insertNode(SortTreeElement*); SortTreeElement * searchNode(SortTreeElement*); SortTreeElement * getRoot (void); void insertRoot(SortTreeElement*); void fillList(void); int length(void); void browse(void); void get_TXT(void); void readNwrite_firstName(void); void readNwrite_lastName(void); void readNwrite_nr(void); void insertLast(SortTreeElement*); void insertLeft (SortTreeElement * neu, SortTreeElement * te); void insertRight (SortTreeElement * neu, SortTreeElement * te); SortTreeElement* first(void); SortTreeElement* last(void); void inLast(void); void traverse (TRAVERSART TA , void (*f)(SortTreeElement *)); protected: void deleteNode(SortTreeElement*, SortTreeElement**); SortTreeElement* searchNode(SortTreeElement*, SortTreeElement*); void insert(SortTreeElement*, SortTreeElement*); SortTreeElement* root; void browse (SortTreeElement *, int); SortTreeElement* head; string temp_firstName; string temp_lastName; string temp_nr; string temp_input; int pos; int find; void traverse(TRAVERSART TA, SortTreeElement * te , void (*f)(SortTreeElement *)); };
Und aus der zweiten cpp und h-Datei:
#include "SortTreeElement.h" SortTreeElement::SortTreeElement(void) { firstName = ""; lastName = ""; nr = ""; next = NULL; } SortTreeElement::SortTreeElement(string fn, string ln, string nr) { this->firstName = fn; this->lastName = ln; this->nr = nr; this->next = NULL; } SortTreeElement::~SortTreeElement(void) { } SortTreeElement* SortTreeElement::getNext(void) { return next; } void SortTreeElement::setNext(SortTreeElement* next) { this->next = next; }
h-Datei:
#pragma once #include <iostream> using namespace std; class SortTreeElement { public: SortTreeElement(void); virtual ~SortTreeElement(void); SortTreeElement(string, string, string); SortTreeElement* getNext(void); void setNext(SortTreeElement*); virtual bool isgreater (SortTreeElement *) = 0; virtual bool isequal (SortTreeElement *) = 0; SortTreeElement * getRoot (void); SortTreeElement * getLeft (void); SortTreeElement * getRight (void); void setLeft (SortTreeElement *); void setRight (SortTreeElement *); virtual void browse (int) = 0; protected: SortTreeElement* right; SortTreeElement* left; string firstName; string lastName; string nr; SortTreeElement* next; friend class BinarySortTree; };
Der Fehler kommt in Zeile 69 der ersten cpp-Datei. Ich weiß leider nicht wie ich den Fehler am besten beseitigen kann.
Hier die Fehlermeldung:
error C2661: 'BinarySortTree::BinarySortTree': Keine überladene Funktion akzeptiert 3 Argumente
Bin für jede Hilfe dankbar.
-
SortTreeElement* neu = new BinarySortTree(temp_firstName, temp_lastName, temp_nr);
Da stimmen die Typen auch nicht überein - Wenn du ein Baum-Element erzeugen willst, dann solltest du auch keinen Baum anfordern
-
Ist ja auch logisch.
Vielen Dank für die Antwort.