Hmm, jetzt versteh ich schon mal, warum einem so ein Konstrukt um die Ohren fliegt
Bleibt noch das Problem, dass ich noch nicht so genau weiß, wie ich mein eigentliches Problem angehen soll
Die Problemstellung geht in die Richtung, dass ich eine Objekthierachie aufbauen wollte, in der mehrerer Objekte zwei verschiedene Eigenschaften (bzw. Funktionen die sie garantieren) haben oder auch nicht und sich das dummwerweise nicht sinnvoll trennen lässt. Genauer ging es darum (nicht-/)durchlaufbare, einfach-/doppeltverkette Listen und die Funktionen von Stacks und Queues zu kombinieren, um endlich mal eine flexible Implementierung solcher Strukturen zu haben, da die einzigen Standardtypen von Delphi auf Arrays (TList) aufbauen und auch recht eingeschränkt sind.
Alle meine Ideen, wie ich das mit normaler Vererbung basteln könnte, laufen leider darauf, dass ich irgendwelche unschönen Einschränkungen hinnehmen müsste, also brauch ich so eine Art unschöner Mehrfachvererbung
Als konkretes Beispiel kann hier eine
Deque herhalten, bei der sich nun die Frage stellt, ist das eine doppeltverkettete Liste, ein Stack oder eine Queue. Also wollte ich (da es ja auch Stacks und Queues gibt, die das jeweils andere nicht können und man eine doppelt verkettete Liste auch nochmals durchlaufbar machen kann) der Deque jetzt am liebsten ein IStack und ein IQueue verpassen und Funktionen nutzen, die alles entgegennehmen und nutzen können, das diese Interfaces unterstützt? Wie geht man das jetzt am besten an? Man soll die Objekte ja auch schließelich außerhalb der Funktionen normal benutzen können und nicht immer nur auf einen Teil ihrer Funktion zugreifen können.
Von meinem "Experiment" her, würde ich jetzt sagen, es würde funktionieren den Funktionen ein const zu verpassen, aber wenn einem sowas sonst um die Ohren fliegt, kann das ja nicht der "saubere" Weg sein (falls er überhaupt klappen würde).
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?