000
25.10.2005, 18:32 Uhr
~Ankatrin
Gast
|
Hallo, ich habe folgende Struktur für eine verkettete Liste:
clTreeStruct.h
C++: |
typedef struct baum { int inhalt; // speichert den Namen. baum *pnaechster; baum *pvorgaenger; // Zeiger auf die nächste tree Struktur. }baum;
class clTreeStruct { public://Methoden clTreeStruct(void); ~clTreeStruct(void); void AddItem(int zahl); void PrintAll(void); void DeleteAllItems(void); int Test(void); int GetBack(void); baum *anker; baum *pWorker; };
|
clTreeStruct.cpp
C++: |
#include "StdAfx.h" //#include ".\cltreestruct.h" #include "clTreeStruct.h"
clTreeStruct::clTreeStruct(void) { anker = NULL; }
clTreeStruct::~clTreeStruct(void) { }
void clTreeStruct::AddItem(int zahl) // zahl ist unser Wert der in das neue Objekt reinkommt { if(anker == NULL) //Wenn noch keine Strukturen { anker = new baum; // das neue Objekt wird erstellt, im HEAP! anker->inhalt = zahl; // Inhalt wird gefüllt. anker->pnaechster = NULL; // Nächster auf NULL, da anker 1 und letztes Element ist. anker->pvorgaenger = NULL; //Auf NULL da keinen Vorgänger } else { pWorker = anker; // "Arbeitszeiger" zeigt auf das erste Element! while (pWorker->pnaechster != NULL)//Solange bis zum letzten Element. { pWorker = pWorker->pnaechster; //pWorker kriegt das letzte Element, also NULL } pWorker->pnaechster = new baum; // pnaecherster zeigt auf die neue Struktur. pWorker->pnaechster->pvorgaenger = pWorker;//pVorgaenger zeigt auf vorheriger Struktur. pWorker = pWorker->pnaechster; // Arbeitszeiger auf neues Element. pWorker->inhalt=zahl; // nun setzen wir den Wert unseres neuen Elements // (bekommen wir ja von unserer Funktion) pWorker->pnaechster = NULL; // !!!! Wichtig !!!! hier lassen wir noch naechster // unseres neuen Elements auf NULL zeigen um es als // letztes Element zu auszuzeichen } } ...
|
Dies habe ich als extra Klasse zu meinen Projekt hinzugefügt. Ich will also, das die Struktur der Liste während des ganzen Programms verfügbar ist. Wenn ich jetzt z.B. die Methode AddItem aufrufe:
C++: |
clTreeStruct *objTree = NULL; objTree = new clTreeStruct; int iEingabe = GetDlgItemInt(IDC_EingabeFeld); objTree->AddItem(iEingabe); MessageBox("Knoten Eingefügt",MB_OK);
|
Und danach versuche von der View auf den Eingefügten Knoten zuzugreifen:
C++: |
clTreeStruct objTree; int iB = objTree.GetBack(); CString MeinCstring; MeinCstring.Format("%d\n", iB); MessageBox(MeinCstring,MB_OK);
|
Funktioniert das natürlich nicht, da ja ein neues Objekt der Klasse clTreeStruct erstellt wird, und somit der Pointer auf Nichts zeigt. Wie kann ich das jetzt anstellen, dass ich die Struktur (also die verkettete Liste) die ganze Zeit zur Verfügung habe also total Global zu verfüfung habe?
Viele Grüße eure Kati! |