webForumDet fria alternativet

Static Inner Class?

4 svar · 307 visningar · startad av Compusa

CompusaMedlem sedan jan. 20022 952 inlägg
#1

Hej :)

Håller på att implementera en wrapper klass för en dubbel-länkad lista. Klassen som heter CList innehåller en rad olika metoder för att lägga till, editera och ta bort noder med mera.

Nu ska jag implementera en Iterator och har kommit fram till att jag ska använda en inner class (nestlad) i den befintliga för detta.

Det jag undrar över, är om jag ska sätta inner classen som static eller inte? Det jag har kommit fram till är att den inte ska vara static i och med att att det kan finnas flera instanser av CList och varje inner class bör vara knuten till en specifik instans.

Är jag helt ute och cyklar?

spangoMedlem sedan juni 20006 147 inlägg
#2

Nej, du har tvärtom helt rätt. Båda varianterna kan funka, men den bör inte vara static. Eftersom en iterator opererar på (eller egentligen är en aspekt av) en specifik instans av listklassen skulle det bara leda till onödigt dubbelarbete. Är den icke-static kan den direkt komma åt alla noder och liknande delar som den behöver.

CompusaMedlem sedan jan. 20022 952 inlägg
#3

Tack spango, ytterligare en fråga, är det inte möjligt att att skapa en helt fristående klass av Iteratorn? Dvs lyfta ur den ur listklassen eller är det en dum lösning?

LimeMedlem sedan sep. 2001837 inlägg
#4

Eftersom Iteratorn för CList är beroende av CList och jag antar att man får den från CList.iterator() så finns det ingen anledning alls att ha den som separat klass. Man skall ju inte kunna instansiera en CListItertor från någon annanstans än CList... eller??

CompusaMedlem sedan jan. 20022 952 inlägg
#5

Du har så rätt Lime, har kommit fram till att både CListIterator och DNode ska vara inner classes i CList

Genererad på 376 ms · cache AV · v20260730165559-full.f96bc7eb