<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Bessere Lösung?]]></title><description><![CDATA[<p>Hallo,</p>
<p>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).<br />
Ist an folgender Lösung etwas auszusetzen? Gibt es einfachere / bessere / schönere Lösungen?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class A {
public:
	A(int&amp; foo) {
		std::cout &lt;&lt; foo &lt;&lt; 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;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/296553/bessere-lösung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 21:42:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296553.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Dec 2011 21:00:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bessere Lösung? on Tue, 06 Dec 2011 21:01:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>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).<br />
Ist an folgender Lösung etwas auszusetzen? Gibt es einfachere / bessere / schönere Lösungen?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class A {
public:
	A(int&amp; foo) {
		std::cout &lt;&lt; foo &lt;&lt; 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;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2154096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2154096</guid><dc:creator><![CDATA[sirniko]]></dc:creator><pubDate>Tue, 06 Dec 2011 21:01:01 GMT</pubDate></item><item><title><![CDATA[Reply to Bessere Lösung? on Wed, 07 Dec 2011 00:04:27 GMT]]></title><description><![CDATA[<p>Warum ableiten im Vergleich zum Delegieren? Und wenn <code>foo</code> sowieso 42 ist, dann kann der Konstruktor von A in B gleich den Parameter uebergeben ohne den Umweg ueber foo.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2154154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2154154</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 07 Dec 2011 00:04:27 GMT</pubDate></item><item><title><![CDATA[Reply to Bessere Lösung? on Wed, 07 Dec 2011 08:38:12 GMT]]></title><description><![CDATA[<p>sirniko schrieb:</p>
<blockquote>
<p>ich habe eine Klasse, nennen wir sie A. [...]<br />
Ist an folgender Lösung etwas auszusetzen? Gibt es einfachere / bessere / schönere Lösungen?</p>
</blockquote>
<p>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-&gt;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-&gt;P. Die Vereinfachungen P-&gt;B und LP-&gt;LB lassen aber keine verlässliche Aussage darüber aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2154176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2154176</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 07 Dec 2011 08:38:12 GMT</pubDate></item></channel></rss>