Frage zu Strukturen und Klassen
-
Also ich habe die folgende Struktur
struct Node{ int size; //Größe eines Blattes Node *less; //Untere Elemente Node *gt[n]; //Oberes Element T *val; //Wert des Blattes Node *parent; //Elternelement Node *root; }
Ich möchte sie in einer Klasse
template <class T> class btree { public: private: }
Einbringen aber irgendwie gelingt es mir aus mehren Gründen nicht?
Ich hab mal gesehen das es irgendwie per initalisierungsliste in der struktur geht, aber so recht will es mir nicht gelingen.Vielleicht denke ich auch einfach nur falsch.
Ziel ist es eine Klasse zu implementieren, die folgende Funktion beinhalten kann und gerade diese aufrufe mit Node durchführen kann.
void btree::insert(int a) { //1) Blatt suchen Node=root; while(Node->less) { for(i=Node->size-1;i>=0;i--) { if(Node->val[i]<a) { break; } } if (i=-1) { Node=Node->less; } else { Node=Node->gt[i]; } } //2) Element einfügen pa=0; do{ for(i=Node->size-1;i>=0;i--) if(Node->val[i]>0) { Node->val[it1]=Node->val[i]; Node->gt[i+1]=Node->gt[i]; } else { Node->val[i]=a; Node->gt[i]=pa; Node->size++; break; } //3)Splitten if(Node->size==n) { pa==new Node(); for(i=0;i<n/2;i++) { pa->val[i]=Node->val[i+n/2+1]; pa->gt[i]=Node->gt[i+n/2+1]; } pa->size=Node->size=n/2; pa->less=Node->size=n/2; a=Node->val[n/2]; if(Node->parent==0;) { Node->parent=new Node() } Node->parent->less=Node; root=node->parent; pa->parent=Node->parent; Node=Node->parent; else { break; } }while(true); }
-
schreibe bitte mal was du versucht hast. so ist das ein bisschen schwierig, da meine glasskugel leider gerade zur reparatur ist.
-
Mir wurde eben die insert funktion vorgegeben, nur benötige ich erst einmal einen Weg wie ich diese Variablen in der Klasse deklarieren kann.
template <class T> class btree { public: btree(); virtual ~btree(); insert(int); private: int n; struct Node{ int size; //Größe eines Blattes Node *less; //Untere Elemente Node *gt[n]; //Oberes Element T *val; //Wert des Blattes Node *parent; //Elternelement Node *root; } };
-
Du benutzt Node ständig als wäre es eine Variable. Es ist aber ein Typ. "root" wäre vermutlich so eine Variable (vom Typ "Node").
BTW: Mit ein paar Hinweisen,
a) welcher Fehler auftritt
b) wo er auftrittbekommst Du sicher schneller Hilfe. Die meisten hier haben keine Lust, sich vollständig durch fremden Code zu beißen, sehen aber oft auf den ersten Blick, was falsch ist, wenn diese Infos bekannt sind.
-
erstmal C/C++ tags benutzen
struct Node { int size; //Größe eines Blattes Node *less; //Untere Elemente Node *gt[n]; //Oberes Element T *val; //Wert des Blattes Node *parent; //Elternelement Node *root; }; template <class T> class btree { public: btree(); virtual ~btree(); insert(int); private: int n; Node knoten; // so bindet man das struct ein };
entweder so oder so bindet man structs in klassen ein:
class test { public: struct lol { int a; } lol; };