Ich stolpere in diesem Jahr immer wieder über ein Problem, nämlich, dass ich Objekten, die von einer gemeinsamen Basisklasse abgeleitet sind, nachträglich ein Basisklassenerweiterung verkaufen muss.
Aktuell habe ich eine Klasse "Result". Ein Result kann ein IntResult, BoolResult oder ein StringResult sein.
Das bedeutet, dass die abgeleiteten Klassen alle eine unterschiedliche Größe haben.
Nun muss ich ein Result mit einem Namen verknüfen und dieser Name muss in der Oberklasse auftauchen, damit ich dieses NamedResult in Container packen kann.
Ich könnte nun eine Klasse definieren, die auf ein Result referenziert, dann spielt es keine Rolle, um welchen Result-Typ es sich handelt. Ich möchte aber nicht zwei Objekte anlegen müssen, nur um das auszudrücken.
Ich könnte alle Ableitung nochmal machen und von einem NamedResult ableiten, das würde per Template gehen, erzeugt aber eine Menge Boilerplate.
Bin für Ideen offen. ^^
Aufgespaltene Klassenhierarchien
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Aufgespaltene Klassenhierarchien
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- fat-lobyte
- Beiträge: 1398
- Registriert: Sa Jul 05, 2008 12:23 pm
- Wohnort: ::1
- Kontaktdaten:
Re: Aufgespaltene Klassenhierarchien
Wäre vielleicht "Type Erasure" etwas für dich? http://aszt.inf.elte.hu/~gsd/s/cikkek/abel/Becker.pdf
http://www.cplusplus.com/forum/articles/18756/
Oder bereits fertig implementiert Boost.Any?: http://www.boost.org/doc/libs/1_50_0/doc/html/any.html
(benutzt Type Erasure)
http://www.cplusplus.com/forum/articles/18756/
Oder bereits fertig implementiert Boost.Any?: http://www.boost.org/doc/libs/1_50_0/doc/html/any.html
(benutzt Type Erasure)
Haters gonna hate, potatoes gonna potate.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Aufgespaltene Klassenhierarchien
Ich habe eine Klasse NamedResult geschrieben, die die Operatoren -> und * pure virtuell bereitstellt indem es ein Result zurückliefert und einen konstanten Namen trägt.
Davon abgeleitet ist ein Template NamedResultTpl, dass von von NamedResult erbt und ein Member hat. Dieses Member wird bei -> und * zurückgegeben. Entsprechend muss es ein von Result abgeleiteter Typ sein.
Result selbst legt fest, was für ein Typ es ist.
Auch BoilerPlate, aber halbwegs überschaubar.
Davon abgeleitet ist ein Template NamedResultTpl, dass von von NamedResult erbt und ein Member hat. Dieses Member wird bei -> und * zurückgegeben. Entsprechend muss es ein von Result abgeleiteter Typ sein.
Result selbst legt fest, was für ein Typ es ist.
Auch BoilerPlate, aber halbwegs überschaubar.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.