<?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[Entwurfsmuster Template-Methode bei Konstruktor nicht anwendbar?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hatte in letzter Zeit gleich 2 mal folgendes Problem:<br />
Ich wollte eine Template-Methode (Entwurfsmuster) benutzen undzwar beim Konstruktor.<br />
Die abgeleiteten Klassen sollen also einen Teil der Konstruktion übernehmen.<br />
Z.B. hatte ich eine Level-Klasse und dann wollte ich eine abstrakte Methode createObjects() machen und diese im Basisklassenkonstruktor aufrufen.<br />
Jetzt habe ich das gleiche mit einer ActorPhysics-Klasse, bei der ich eine abstrakte Methode createBody() machen wollte und diese dann im Basisklassenkonstruktor aufrufe.</p>
<p>Das geht leider nicht, weil im Konstruktor virtuelle Methoden nicht richtig funktionieren.</p>
<p>Wenn ich das allerdings anders mache, z.B. den Body protected mache, oder nen protected setter für den Body mache, dann kann es passieren, dass man in der abgeleiteten Klasse ganz einfach &quot;vergisst&quot;, den Body zu erstellen.</p>
<p>Gibts da irgendwelche Auswege (allgemein und für beide speziellen fälle)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291042/entwurfsmuster-template-methode-bei-konstruktor-nicht-anwendbar</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 23:23:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291042.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Aug 2011 17:19:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Entwurfsmuster Template-Methode bei Konstruktor nicht anwendbar? on Tue, 09 Aug 2011 17:20:29 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hatte in letzter Zeit gleich 2 mal folgendes Problem:<br />
Ich wollte eine Template-Methode (Entwurfsmuster) benutzen undzwar beim Konstruktor.<br />
Die abgeleiteten Klassen sollen also einen Teil der Konstruktion übernehmen.<br />
Z.B. hatte ich eine Level-Klasse und dann wollte ich eine abstrakte Methode createObjects() machen und diese im Basisklassenkonstruktor aufrufen.<br />
Jetzt habe ich das gleiche mit einer ActorPhysics-Klasse, bei der ich eine abstrakte Methode createBody() machen wollte und diese dann im Basisklassenkonstruktor aufrufe.</p>
<p>Das geht leider nicht, weil im Konstruktor virtuelle Methoden nicht richtig funktionieren.</p>
<p>Wenn ich das allerdings anders mache, z.B. den Body protected mache, oder nen protected setter für den Body mache, dann kann es passieren, dass man in der abgeleiteten Klasse ganz einfach &quot;vergisst&quot;, den Body zu erstellen.</p>
<p>Gibts da irgendwelche Auswege (allgemein und für beide speziellen fälle)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104065</guid><dc:creator><![CDATA[*Q* 1]]></dc:creator><pubDate>Tue, 09 Aug 2011 17:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to Entwurfsmuster Template-Methode bei Konstruktor nicht anwendbar? on Tue, 09 Aug 2011 17:24:04 GMT]]></title><description><![CDATA[<p>Was spricht denn dagegen, wenn jede Klasse ihre eigenen Daten selber im Konstruktor-Rumpf initialisiert? (im Notfall würde ich gern sehen, was diese createBody()-Methode eigentlich machen soll - und warum die Basisklasse darauf angewiesen ist, daß sie von abgeleiteten Klassen überschrieben wird)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104068</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 09 Aug 2011 17:24:04 GMT</pubDate></item><item><title><![CDATA[Reply to Entwurfsmuster Template-Methode bei Konstruktor nicht anwendbar? on Tue, 09 Aug 2011 17:39:12 GMT]]></title><description><![CDATA[<p>Ich benutze box2D.<br />
Erstmal muss der body erstellt werden und dafür muss angegeben werden, ob es sich um einen statischen oder dynamischen körper handelt. Das könnte man noch als Argument für die Basisklasse machen.<br />
Die abgeleiteten Klassen müssen aber die Fixtures für den Body erstellen.<br />
Fixtures geben die Form des Körpers an.<br />
Ich möchte dann von der Klasse was ableiten, was für Rechtecksform da ist, da fast alles ne Rechtecksform braucht.<br />
Ich will mir aber auch die Möglichkeit offenhalten, andere Formen zu verwenden und evtl. später was mit Kreisform abzuleiten.</p>
<p>createBody() könnte z.B. so in der Art aussehen:</p>
<pre><code class="language-cpp">b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(pixelToBox2D(xPos), pixelToBox2D(yPos));
body_ = world_.CreateBody(&amp;bodyDef);

b2PolygonShape boxShape;
boxShape.SetAsBox(pixelToBox2D(width/2.f), pixelToBox2D(height/2.f));
b2FixtureDef boxFixtureDef;
boxFixtureDef.shape = &amp;boxShape;

body_-&gt;CreateFixture(&amp;boxFixtureDef);
body_-&gt;SetUserData(this);
</code></pre>
<p>Edit: Das ist ja das besondere: Die Daten die dort initialisiert werden, sind eigentlich die der Basisklasse, die abgeleitete Klasse leitet im Grund nur ab, um einen Teil der initialisierung der Basisklasse zu spezifizieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104069</guid><dc:creator><![CDATA[*Q* 1]]></dc:creator><pubDate>Tue, 09 Aug 2011 17:39:12 GMT</pubDate></item></channel></rss>