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;
}
|
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.