Hallo.
Ich muss etwas legacy Code um neue Klassen ergänzen. DataA und ContainerA sind gegeben, DataB und ContainerB müsser aus diesen abgeleitet werden. Die Idee ist im Code unten veranschaulicht. Natürlich ist es nicht kompilierbar, weil die Elternklasse einen const& Member enthält (die Tochterklasse tut es ebenfalls). Ist eine solche Vererbung überhaupt machbar ohne die Elternklassen zu manipulieren?
PS: vector und queue sind nur Beispiele, in Wirklichkeit sieht's etwas komplizierter aus.
Code:#include <vector> #include <queue> class DataA { std::vector<int> dataA; virtual void processData(); public: DataA() { dataA.push_back(0); } }; class DataB : public DataA { std::queue<int> dataB; virtual void processData(); public: DataB() {dataB.push(0);} }; class ContainerA { DataA const& dA; public: ContainerA(DataA const& d) : dA(d) {} }; class ContainerB : public ContainerA { DataB const& dB; public: ContainerB(DataB const& d) : dB(d) {} }; int main() { DataB db; ContainerB cb(db); }
Lesezeichen