Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

11

04.05.2004, 20:08

Die add Methode sieht folgendermaßen aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <typename _type>
void CList<_type>::add(_type value)
{
    CListElement<_type>* pElem = new CListElement<_type>(value);

    if (elemFirst == 0)
    {
        elemFirst = pElem;
        elemLast = pElem;
        elemCurrent = pElem;
    }
    else
    {
        // Element hinten anfügen
        elemLast->pNext = pElem;
        elemLast = pElem;
    }
}


Und die clear Methode so:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <typename _type>
void CList<_type>::clear()
{
    CListElement<_type>* tmp = elemFirst;
    CListElement<_type>* d = elemFirst;

    while (tmp != 0)
    {
        d = tmp;
        tmp = tmp->pNext;
        delete d;
    }

    elemFirst = 0;
    elemLast = 0;
    elemCurrent = 0;
}


Zitat


Außerdem übergibt man zum Adden eigentlich immer die Addresse.


Du meinst, ich sollte eher

Quellcode

1
2
3
4
CList<SNode> knoten;
knoten.add( &sNode1 );

pTree->add( &knoten );


machen, damit ich die Adresse übergebe? Oder meinst du ich solle neue Objekte mit new anlegen, und dann die Zeiger übergeben:

Quellcode

1
2
3
4
CList<SNode>* knoten new CList<SNode>();
knoten.add( ZeierAuf_sNode1 );

pTree->add( knoten );


Wenn ich tatsächlich den SNode sowie die "innere" Liste mit new anlege, dann muss ich ja später beim clearen der Liste auch aufpassen, dass ich die Objekte mit delete wieder freigebe.. ich dachte, wenn ich die Objekte direkt übergebe, wäre es einfacher.

12

04.05.2004, 20:19

Wenn du einen Kopierkonstruktor anlegst der eine Tiefe kopie macht. Ist es auch kein Problem.

Vier Fragen:
1) Was passiert bei einer Übergabe einer Variablen?
2) Was passiert bei einer Übergabe einer Variablen mit Referenz?
3) Was passiert bei einer Übergabe einer Variablen mit Zeiger?
4) Was passiert bei Austritt eines Namensbereich?

Wenn du das weist, hast du alle Antworten die du brauchst und kannst deinen Code entsprechend anpassen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D