Bessere Lösung?
-
Hallo,
ich habe eine Klasse, nennen wir sie A. Diese bekommt im Konstruktor eine Referenz auf ein Objekt von Typ T (und benutzt das korrespondierende Objekt auch). Nun würde ich davon gerne eine Klasse ableiten, nennen wir sie B. Diese soll ein Objekt von Typ T als Member enthalten und dieses soll dem A-Teil im Konstruktor übergeben werden (ich möchte die Existenz des T Objekts vor dem Benutzer verstecken).
Ist an folgender Lösung etwas auszusetzen? Gibt es einfachere / bessere / schönere Lösungen?#include <iostream> class A { public: A(int& foo) { std::cout << foo << std::endl; } }; namespace { class Dummy { public: Dummy() : foo(42) { } int foo; }; } class B : private Dummy, public A { public: B() : A(foo) { } }; int main(int , const char**) { B works; }
-
Warum ableiten im Vergleich zum Delegieren? Und wenn
foosowieso 42 ist, dann kann der Konstruktor von A in B gleich den Parameter uebergeben ohne den Umweg ueber foo.
-
sirniko schrieb:
ich habe eine Klasse, nennen wir sie A. [...]
Ist an folgender Lösung etwas auszusetzen? Gibt es einfachere / bessere / schönere Lösungen?Du hast ein Beispiel, nennen wir es B. Ferner hast du einen Lösungsansatz LP für dein tatsächliches Problem P und Lösungsansatz LB für dein Beispiel. Du möchtest jetzt, dass wir von der Beziehung LB->B Aussagen über deren Schönheit, Einfachheit und Qualität machen. Kannst du gerne haben, bringt dir aber nichts, denn was du wissen willst, ist etwas über die Beziehung LP->P. Die Vereinfachungen P->B und LP->LB lassen aber keine verlässliche Aussage darüber aus.