Wofür braucht man eine Klasse in einer Klasse?
-
Letztens wollte unser Lehrer uns doch glatt erklären wie eine doppelt verkettete Liste funktioniert (
), na ja er hat uns seine Version gegeben und die war total anders als ich das bis dato gelernt hatte.
Er hat eine Klasse verwendet, und in der Klasse noch eine Klasse. Leider habe ich den Zettel gerade nicht hier liegen sonst hätte ich das kurz abgetippt, nur gesehen habe ich so etwas noch nie.
Wofür braucht man eine Klasse in der Klasse? Wieso nicht einfach zwei Klassen (jetzt bitte geistig von der d. v. Liste wegkommen darum gehts nicht
)
-
Weil die eine Klasse zur anderen "gehört", listelem hat ja auch nix im globalen Namespace verloren, listelem gehört viel eher zur Liste dazu:
class list { class listelem { listelem* next; // ... }; // ... };
Ein weiteres Beispiel wäre ein iterator. Diese Klasse gibt es für jeden STL-Container, und jeder Iterator benötigt eine andere Implementierung. Wie aber anstellen wenn im globalen Namespace (bzw. im Falle der STL im Namespace std) nur einmal die Klasse iterator da sein kann? So aber kann jede Klasse ihren iterator haben.
MfG SideWinder
-
Auch wenns in SideWinders Beispiel schon impliziert wurde, solche Klassen können dann auch private (oder protected, aber das habe ich noch nicht gesehen) sein.
-
operator void schrieb:
Auch wenns in SideWinders Beispiel schon impliziert wurde, solche Klassen können dann auch private (oder protected, aber das habe ich noch nicht gesehen) sein.
<edit>Gelöscht. Habe jetzt erst bemerkt, dass sich das "habe ich noch nicht gesehen" nur auf das protected bezieht. </edit>