<?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[Setter in C++]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>also ich möchte gerade ne Simulation schreiben und steh glaub ich gerade<br />
aufm Schlauch. Wie krieg ich die Speicherverwaltung hin, wenn ich zum<br />
Beispiel die Strategie in einer Spieler-Klasse setzen möchte.</p>
<p>Wie mach ich das am Besten?</p>
<pre><code class="language-cpp">class Player {
void setStrategy(Strategy s); // und brauch nen Korrekten Copy-Konstruktor
// aber krieg ich doch nen Problem bei pure virtual, oder?
// vielleicht ne zusätzliche clone-Methode?
}
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">class Player {
void setStrategy(std::auto_ptr&lt;Strategy* s&gt;); // Hier sehe ich kein Problem
// bzw mit shared_pointer

}
</code></pre>
<p>Oder macht man das eigentlich anders?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168065/setter-in-c</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 06:52:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168065.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Dec 2006 11:03:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Setter in C++ on Mon, 18 Dec 2006 11:03:02 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>also ich möchte gerade ne Simulation schreiben und steh glaub ich gerade<br />
aufm Schlauch. Wie krieg ich die Speicherverwaltung hin, wenn ich zum<br />
Beispiel die Strategie in einer Spieler-Klasse setzen möchte.</p>
<p>Wie mach ich das am Besten?</p>
<pre><code class="language-cpp">class Player {
void setStrategy(Strategy s); // und brauch nen Korrekten Copy-Konstruktor
// aber krieg ich doch nen Problem bei pure virtual, oder?
// vielleicht ne zusätzliche clone-Methode?
}
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">class Player {
void setStrategy(std::auto_ptr&lt;Strategy* s&gt;); // Hier sehe ich kein Problem
// bzw mit shared_pointer

}
</code></pre>
<p>Oder macht man das eigentlich anders?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193896</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Mon, 18 Dec 2006 11:03:02 GMT</pubDate></item><item><title><![CDATA[Reply to Setter in C++ on Mon, 18 Dec 2006 11:08:38 GMT]]></title><description><![CDATA[<p>Wenn du auf Polymorphie hinauswillst: das funktioniert nur mit Zeigern (inklusive Smart-Pointern) oder Referenzen - in deinem Fall wohl eher Zeiger. Allerdings mußt du dir darüber klar werden, wem das Objekt gehört, auf das du intern verweist.</p>
<p>(entweder du nimmst für jeden Spieler eine eigene Kopie, dann benötigst du eine virtuelle clone()-Methode, oder du verwendest Shared-Pointer (auto_ptr würde ich nicht verwenden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193899</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 18 Dec 2006 11:08:38 GMT</pubDate></item><item><title><![CDATA[Reply to Setter in C++ on Mon, 18 Dec 2006 11:27:44 GMT]]></title><description><![CDATA[<p>Danke CStoll...</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Allerdings mußt du dir darüber klar werden, wem das Objekt gehört, auf das du intern verweist.</p>
</blockquote>
<p>Nur genau da liegt mein Problem darin. Woher weiß ich, wenn ich jetzt ein<br />
komplexeres Projekt habe, ob der Setter den ich verwende die Speicherverwaltung<br />
übernimmt oder nicht. Deswegen dachte ich an einen auto_ptr, denn dann ist<br />
es eindeutig, dass er die Veranwortung für das Objekt übernimmt.<br />
Oder gibt es eine Coding Convention, so dass man das an der Signatur sieht?</p>
<p>EDIT: Ich versuche mich immer an dem RAII-Konzept zu orientieren, nur hier<br />
ist das leider nicht möglich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193908</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Mon, 18 Dec 2006 11:27:44 GMT</pubDate></item><item><title><![CDATA[Reply to Setter in C++ on Mon, 18 Dec 2006 11:35:11 GMT]]></title><description><![CDATA[<p>gibt ne sehr einfach konvention: &quot;wer es erzeugt, muss auch hinterher aufräumen&quot;. ist eigentlich fast immer praktikabel. definiere einen punkt im ablauf, an dem das objekt sicher nicht mehr benötigt wird und räume an der stelle dann auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193913</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Mon, 18 Dec 2006 11:35:11 GMT</pubDate></item><item><title><![CDATA[Reply to Setter in C++ on Mon, 18 Dec 2006 11:42:49 GMT]]></title><description><![CDATA[<p>Mit C++ Syntax kannst du einen Besitz nicht direkt darstellen. Du kannst dir deine eigene Konvention setzen. auto_ptr ist eine sehr gute Möglichkeit dafür, denn der Leitspruch bei auto_ptr lautet &quot;Es kann nur einen Besitzer geben!&quot;. Dein erstes Beispiel würde auch syntaktisch gut sein, dann würde durch den Stack das Resource-Management arbeiten. aber bei abstrakten Klassen klappt das natürlich nicht.</p>
<p>Pointer würde ich in dem Fall nicht benutzen, weil Pointer ja nur auf etwas verweisen. Und für mich heißt das, das Objekt liegt bei jemand anderem, aber ich kenne es halt nur durch den Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193915</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 18 Dec 2006 11:42:49 GMT</pubDate></item></channel></rss>