OK, also habe ich jetzt zwei (völlig unabhängige, andere Projekt) Klassen mit Iteratoren. One hat iterator
und reverse_iterator
funktioniert wie beabsichtigt, und die andere, aktuelle hat iterator
und eine halb gebrochen const_iterator
(insbesondere, weil const_iterator von Iterator abgeleitet ist, ist der Code LinkedList<int>::iterator i = const_list.begin()
gültig und ermöglicht es Ihnen, die Const definierten Liste zu ändern ...) .
Ich beabsichtige, alle vier Arten zu dieser Klasse hinzuzufügen ... Wenn ich kann.Wie kann ich das DRY-Prinzip auf Iteratoren in C++ anwenden? (Iterator, Const_iterator, Reverse_iterator, Const_reverse_iterator)
Wie würde ich fortfahren, um den Kopier-/Einfüge-Code zu minimieren und nur den Rückgabetyp zu ändern? Erstellen Sie eine Basisklasse wie base_iterator
, von der er erbt? Erstellen Sie eine iterator
oder const_iterator
und erben Sie davon? Vererben von einigen Std :: Klasse? Wenn einer dieser Fälle der "beste" Ansatz ist, welcher Code geht wo hin?
Vielleicht ist keine der Alternativen gut? Ich bin hier ziemlich verloren und kann nicht viel Referenzmaterial finden.
Jeder Rat ist willkommen, aber bitte bedenken Sie, dass ich neu in diesem Fach bin (sowohl Iteratoren als auch C++ im Allgemeinen, insbesondere OOP). Ich habe vergeblich versucht, die mit GCC gelieferten Header-Dateien zu studieren - sie sind nicht genau das Tutorial, nach dem ich suche.
Stdlib Implementierungen ist in der Regel eines schlechten Wahl zu lernen, für jede Sprache. Sie müssen oft mit externen Schnittstellen (z. B. dem Betriebssystem, anderen Sprachen) umgehen, müssen möglicherweise rückwärtskompatibel mit Code aus dem letzten Jahrzehnt sein, und andere Faktoren, die einfach nicht auf Sie zutreffen. In der Summe: Sie sind nicht mit dem Ziel des Unterrichts geschrieben. Ein gutes Buch ist ein Muss und wird Ihnen viel besser dienen. –