Seite 1 von 1

Dynamische Klasse- Frage

Verfasst: Mi Jul 11, 2012 9:16 pm
von Kmitska
Hallo Leute,

habe hier eine dynamische Klasse geschrieben:

Code: Alles auswählen

class DynList
{
    private:
         DynList* next;
         string name;

    public:
        DynList* Anker, *tmp, *end;
        void Add(string NAME);
        DynList(){ Anker = 0; }
};
Die Problemfunktion:

Code: Alles auswählen

void DynList::Add(string NAME)
{
    if ( Anker == 0)
    {
        DynList* node = new  DynList;
        end = node;
        node->name = NAME;
        node->next = Anker;
        Anker = node;
        Anker = end;
        return;
    }
    if(Anker)
    {
        while(Anker)
        {
            tmp = Anker;
            tmp = tmp->next;
            if(!tmp)
            {
                DynList* node = new  DynList;
                node->name = NAME;
                Anker->next = node;
                Anker = end;
                return;
            }
        }
    }
}
Diese Funktion soll ein Objekt am Ende hinzufügen.

Das Problem:
Wenn ich nur 2 Objecte erstellen lasse, funktioniert alles.
Beim 3. Objekt klappt das nicht mehr.

Könnt Ihr mir Tipps geben, wie ich das elegant lösen könnte bzw. verbessern?

Re: Dynamische Klasse- Frage

Verfasst: Mi Jul 11, 2012 9:36 pm
von Xin
Deine Liste und Dein "Node" ist die gleiche Datenstruktur.

Anger = end;

Das wirkt auf mich jetzt nicht sinnvoll. Du solltest Liste und Node voneinander trennen.

Re: Dynamische Klasse- Frage

Verfasst: Do Jul 12, 2012 9:56 pm
von Kmitska
Was meinst Du mit "Liste"?
Und dies funktioniert ja mit 2 Objekten. Bei > 3 Objekten gibt es Probleme.

Und ich habe noch eine Funktion, die ein Objekt am Anfang hinzufügt, dieser funktioniert einwandfrei.

Code: Alles auswählen

void tabClass::addBegin(listWindow* win, wxString srequest, wxGrid* gr, wxNotebook* nBook, short pageNum, wxString tabName, pthread_t* t){
DynList* node = new  DynList;
    end = node;
    node->name = NAME;
    node->next = Anker;
    Anker = node;
}
Und ich schaue eigentlich im Prinzip bei ::Add so lange nach, bis Anker auf NULL zeigt und initialisiere dann beim letzten gültigen Objekt den neuen Objekt - Ich hänge es dahinter.

Re: Dynamische Klasse- Frage

Verfasst: Fr Jul 13, 2012 9:30 am
von Xin
Kmitska hat geschrieben:Was meinst Du mit "Liste"?
while( Kopf -> Tischplatte );

Du scheinst ein intelligentes Kerlchen zu sein, aber dies ist wieder einer der Momente, wie es ein intelligenter Mensch schafft, etwas lernen zu wollen und sich dabei gleichzeitig weigert irgendwo mal etwas nachzulesen.