Pimpl: Verständisproblem bei Vererbung
-
...
-
codejunkie schrieb:
- Wieso tritt dieses Verhalten auf?
ReferenceCounter::d_ und Foobar::d_ haben nichts miteinander zu tun, und nirgendwo führst du ein delete auf Foobar::d_ durch, folglich ist auch kein entsprechender Destruktoraufruf zu sehen.
codejunkie schrieb:
- Wie muss ich den Code-Anpassen für das "korrekte" Verhalten?
Es ist nicht ganz klar, was überhaupt modelliert werden soll, jedenfalls ist es relativ seltsam, eine besitzende Klasse zu haben, die LSP-Vererbung einsetzt als auch eine zugehörige Implementation, die diese benutzt. Mir fällt hierfür kein sinnvolles Anwendungsbeispiel ein (multiple dispatch vielleicht, aber das ist eine andere Art von Baustelle).
addReference+release haben ja völlig verschiedene Bedeutungen, ja nach dem auf welches Objekt sie sich beziehen - auch wenn der Code strukturell identisch aufgebaut ist, ist das daher kein Fall für Vererbung. Ein Template könnte hingegen genutzt werden, um Codeduplikation zu vermeiden (CRTP bietet sich an).