<?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[Wie ersetzt sich ein Objekt selbst?]]></title><description><![CDATA[<p>Welche Möglichkeiten hat ein Objekt sich selbst zu ersetzen?</p>
<p>Ist z.B. ein platzierter new-Ausdruck in einer der Membermethoden sinnvoll?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196936/wie-ersetzt-sich-ein-objekt-selbst</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 00:03:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196936.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 04 Nov 2007 18:01:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 18:01:24 GMT]]></title><description><![CDATA[<p>Welche Möglichkeiten hat ein Objekt sich selbst zu ersetzen?</p>
<p>Ist z.B. ein platzierter new-Ausdruck in einer der Membermethoden sinnvoll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397648</guid><dc:creator><![CDATA[vic1986]]></dc:creator><pubDate>Sun, 04 Nov 2007 18:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 18:55:04 GMT]]></title><description><![CDATA[<p>ein objekt kann sich nicht selber ersetzen. wozu brauchst du das denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397693</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Sun, 04 Nov 2007 18:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 19:11:32 GMT]]></title><description><![CDATA[<p>Es geht schon. Aber den gewünschten Effekt hast du nur mit der Laufzeitpolymorphie. Es muss außerdem gegeben sein, dass die Größe des neuen Typs nicht größer ist, als die des bestehenden:</p>
<pre><code class="language-cpp">class Base
{
public:
    virtual void func () = 0;
    virtual ~Base () {}
};

class A : public Base
{
public:
    template &lt;class B&gt;
    void transform ()
    {
        // Schauen, ob B von Base abgeleitet ist und sizeof (B) &lt;= sizeof (A) ist
        this-&gt;~A ();
        new (this) B;
    }
};
</code></pre>
<p>Das ganze kann dir dann aber durchaus noch beim Destruktoraufruf um die Ohren fliegen, falls B aber von Base abgeleitet ist sollte das mit dem virtuellen Aufruf denke ich funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397703</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 04 Nov 2007 19:11:32 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 19:15:04 GMT]]></title><description><![CDATA[<p>vic1986 schrieb:</p>
<blockquote>
<p>Welche Möglichkeiten hat ein Objekt sich selbst zu ersetzen?</p>
</blockquote>
<p>Was heißt ersetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397704</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 04 Nov 2007 19:15:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 19:39:28 GMT]]></title><description><![CDATA[<p>vic1986 schrieb:</p>
<blockquote>
<p>Welche Möglichkeiten hat ein Objekt sich selbst zu ersetzen?</p>
<p>Ist z.B. ein platzierter new-Ausdruck in einer der Membermethoden sinnvoll?</p>
</blockquote>
<p>Eine weitere Alternative um Objekte austauschbar zu machen ist, eine weitere Abstraktionsebene zu verwenden (Siehe auch Entwurfsmuster Proxy/Stellvereter). Der Sinn hierbei ist, das ein Objekt dazwischen zu setzen, das nach außen hin die Schnittstelle anbietet, tatsächlich aber intern weiterdeligiert (und entsprechend leicht geändert werden kann wenn man in dem Objekt ein Zeiger austauscht).</p>
<p>Dies kann z.B. interessant sein wenn man große Datenobjekte verwaltet, diese aber tatsächlich erst dann einlesen will wenn man wirklich darauf zugreift.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397723</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 04 Nov 2007 19:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 20:30:57 GMT]]></title><description><![CDATA[<p>.filmor: das ist ein überaus schmutziger trick, der überaus undefinierte ausganssituationen erzeugen kann - generell ist es schlecht sowas als &quot;möglichkeit&quot; auch nur anzuführen</p>
<p>die sache mit den proxy-objekten hört sich recht gut an</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397741</guid><dc:creator><![CDATA[ronny]]></dc:creator><pubDate>Sun, 04 Nov 2007 20:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 20:46:18 GMT]]></title><description><![CDATA[<p>ronny schrieb:</p>
<blockquote>
<p>.filmor: das ist ein überaus schmutziger trick, der überaus undefinierte ausganssituationen erzeugen kann - generell ist es schlecht sowas als &quot;möglichkeit&quot; auch nur anzuführen</p>
</blockquote>
<p>Nenn' mir die verletzten Sektionen im Standard. Die Schmutzigkeiten, die ich selbst schon angeführt habe kann man mit relativ wenig Aufwand zur Compilezeit abhaken.</p>
<p>Und abgesehen davon erfordert suspektes Design nunmal suspekte Konstrukte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397753</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 04 Nov 2007 20:46:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 20:49:47 GMT]]></title><description><![CDATA[<p>nt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397754</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 04 Nov 2007 20:49:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 20:48:38 GMT]]></title><description><![CDATA[<p>Wie gesagt, so funktioniert das höchstens mit dynamisch alloziierten Objekten. Das zu erzwingen ist aber auch kein Problem.</p>
<p>/edit: Okay, „wie gesagt“ ist gelogen, aber das meinte ich mit „Laufzeitpolymorphie“ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397758</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 04 Nov 2007 20:48:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 21:17:15 GMT]]></title><description><![CDATA[<p>nur mal so als frage, hast du das schon mal irgendwo erfolgreich eingesetzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397779</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Sun, 04 Nov 2007 21:17:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Sun, 04 Nov 2007 21:44:48 GMT]]></title><description><![CDATA[<p>.filmor: der ctor kann z.b. fehlschlagen<br />
außerdem ist es überaus unpraktisch während die methode eines objektes ausgeführt wird, dieses temporär invalid zu machen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397786</guid><dc:creator><![CDATA[ronny]]></dc:creator><pubDate>Sun, 04 Nov 2007 21:44:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Mon, 05 Nov 2007 12:59:18 GMT]]></title><description><![CDATA[<p>Vielen Dank an alle!</p>
<p>Also, Resümee der durchweg theoretischen Diskussion (mir fällt selbst kein Fall ein, in welchem man das ohne Alternative sinnvoll anwenden müsste) ist, dass es mit einem platzierten new() grundsätzlich möglich, aber nicht zu empfehlen ist, weil z.B. der Konstruktor fehlschlagen könnte.</p>
<p>Ich glaube mich erinnern zu können, eine ähnliche Aufgabe mal vor Jahren im Lippman gelesen zu haben. Wenn jemand das Lösungsbuch besitzt, wäre es nett zu erfahren was die dort dazu meinen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>Nochmal Danke an alle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398002</guid><dc:creator><![CDATA[vic1986]]></dc:creator><pubDate>Mon, 05 Nov 2007 12:59:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Mon, 05 Nov 2007 20:01:07 GMT]]></title><description><![CDATA[<p>ghorst schrieb:</p>
<blockquote>
<p>nur mal so als frage, hast du das schon mal irgendwo erfolgreich eingesetzt?</p>
</blockquote>
<p>Nein. Ich würde es auch nicht tun. Ich fände es grauenhaft, wenn die Objekte selbst ihren Typ ändern würden. Aber wenn ich es machen würde, dann so <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>ronny schrieb:</p>
<blockquote>
<p>.filmor: der ctor kann z.b. fehlschlagen</p>
</blockquote>
<p>Das kann dir auch in einem normalen Programm passieren. Und das kannst du hier ähnlich händeln wie dort.</p>
<p>ronny schrieb:</p>
<blockquote>
<p>außerdem ist es überaus unpraktisch während die methode eines objektes ausgeführt wird, dieses temporär invalid zu machen</p>
</blockquote>
<p>Das stimmt. Aber wenn das Programm Nebenläufigkeit hat muss man eh einen Haufen vorsichtsmaßnahmen treffen, die entsprechenden wären hier hinzuzufügen.<br />
(Im Normalfall bekommt der Benutzer zB nicht die „echten“ virtuellen Funktionen an die Hand sondern normale Methoden. In denen könnte und sollte man dann lustig herumlocken)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398300</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 05 Nov 2007 20:01:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Mon, 05 Nov 2007 20:11:31 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>ronny schrieb:</p>
<blockquote>
<p>.filmor: der ctor kann z.b. fehlschlagen</p>
</blockquote>
<p>Das kann dir auch in einem normalen Programm passieren. Und das kannst du hier ähnlich händeln wie dort.</p>
</blockquote>
<p>Auch ein fehlgeschlagener Konstruktor kann Seiteneffekte haben, am Ende lebt dann dort kein Objekt mehr. Bei normaler Konstruktion ist das kein Problem, da vorher auch kein Objekt da war, bei Konstruktion in einer Memberfunktion ist das schwieriger - denn dann muss der Handler kommunizieren, dass das jeweilige Objekt nicht mehr lebt. Mit anderen Worten: starke oder selbst schwache Exceptionsicherheit ist dann nur recht schier zu erreichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398307</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 05 Nov 2007 20:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wie ersetzt sich ein Objekt selbst? on Tue, 06 Nov 2007 06:48:03 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>...Ich fände es grauenhaft, wenn die Objekte selbst ihren Typ ändern würden...</p>
</blockquote>
<p>Das tritt in realen Programmen aber ggf. tatsächlich auf, nur das ich nach dieser Diskussion meine Alternative (mit der Proxy-Klasse) auf jedenfall sauberer entfinde. Ja, es ist eine Indirektion mehr mag man in Hinsicht auf die Performance sagen, aber zumindestens hat es weniger Fehlerquellen...</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398400</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 06 Nov 2007 06:48:03 GMT</pubDate></item></channel></rss>