<?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[Designfrage]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ist es zulässig dass eine public Methode den Dtor des Objektes aufruft, wovon auch die Methode aufgerufen wurde?</p>
<p>Danke für eure Weisheiten!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191478/designfrage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 26 Sep 2026 00:31:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191478.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Sep 2007 15:21:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Designfrage on Mon, 03 Sep 2007 15:21:59 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ist es zulässig dass eine public Methode den Dtor des Objektes aufruft, wovon auch die Methode aufgerufen wurde?</p>
<p>Danke für eure Weisheiten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358064</guid><dc:creator><![CDATA[Adam Ries]]></dc:creator><pubDate>Mon, 03 Sep 2007 15:21:59 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage on Mon, 03 Sep 2007 15:32:03 GMT]]></title><description><![CDATA[<p>Adam Ries schrieb:</p>
<blockquote>
<p>Hallo!</p>
<p>Ist es zulässig dass eine public Methode den Dtor des Objektes aufruft, wovon auch die Methode aufgerufen wurde?</p>
<p>Danke für eure Weisheiten!</p>
</blockquote>
<p>ja, wenn der Dtor virtuell ist oder der dynamische Typ des Objekts mit dem statischen Typ in der Methode übereinstimmt (eigentlich ist es immer zulässig, wenn diese Bedingungen aber nicht erfüllt sind, dürfte in aller Regel ein Programmierfehler vorliegen). Jeder Zugriff auf Member des Objektes oder der Aufruf anderer nicht-statischer Memberfunktionen auf diesem Objekt ist danach allerdings verboten.</p>
<p>P.S. Ich hoffe du versuchst nicht sowas:</p>
<pre><code class="language-cpp">struct T
{
    T&amp; operator=(const T&amp; other)
    {
        this-&gt;~T();
        new(this) T(other);
        return *this;
    }
};
</code></pre>
<p>Das ist legal und sehr böse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358067</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 03 Sep 2007 15:32:03 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage on Mon, 03 Sep 2007 16:16:25 GMT]]></title><description><![CDATA[<p>Danke, ich bin mir aber nicht sicher ob ich das nun vollends verstanden habe.</p>
<p>Was ich meine ist folgendes:</p>
<pre><code class="language-cpp">class Blah
{
  private:
    Vater* pappa;
    ...
  public:
    Blah() {}
   ~Blah() {}
    DeleteMe() {pappa-&gt;removeInstanceRef(this); delete this;}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1358099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358099</guid><dc:creator><![CDATA[Adam Ries]]></dc:creator><pubDate>Mon, 03 Sep 2007 16:16:25 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage on Mon, 03 Sep 2007 16:21:30 GMT]]></title><description><![CDATA[<p>Das geht schon, allerdings kriegst du Ärger, wenn das Objekt nicht mit new erzeugt wurde, sondern entweder direkt lokal (also auf dem Stack, statt auf dem Heap), oder z.B. nur ein Teil eines Arrays ist, das mit new[] erzeugt wurde (der erste Fall ist der Wahrscheinlichere <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> )</p>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358103</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Mon, 03 Sep 2007 16:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage on Mon, 03 Sep 2007 17:09:49 GMT]]></title><description><![CDATA[<p>Das ganze wirkt auf mich ein wenig &quot;merkwürdig&quot;. Kannst du mal ein bisschen genauer erklären, warum du meinst das zu brauchen. Vielleicht hast du ja irgendeinen Fehler in deinem Design und es gibt eine bessere Lösung, die ohne sowas wie delete(this) auskommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358153</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Mon, 03 Sep 2007 17:09:49 GMT</pubDate></item></channel></rss>