Dynamische Klasse- Frage

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Dynamische Klasse- Frage

Beitrag von Kmitska » Mi Jul 11, 2012 9:16 pm

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?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Dynamische Klasse- Frage

Beitrag von Xin » Mi Jul 11, 2012 9:36 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Re: Dynamische Klasse- Frage

Beitrag von Kmitska » Do Jul 12, 2012 9:56 pm

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Dynamische Klasse- Frage

Beitrag von Xin » Fr Jul 13, 2012 9:30 am

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten