<?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[Virtuelle Funktion aus Ctor]]></title><description><![CDATA[<p>Abend,</p>
<p>ich habe mal gelesen, dass man aus Ctor keine virtuellen Methoden aufrufen soll.<br />
Nun habe ich folgende Situation:</p>
<pre><code class="language-cpp">class ResourceOwner {
    virtual void onResourceCreated(Resource* r) = 0;
};

class Resource {
   Resource(ResourceOwner* owner) : o(owner) {
      o-&gt;onResourceCreated(this);
   }

   ResourceOwner* o;
};
</code></pre>
<p>Jede Resource hat einen ResourceOwner und wenn eine Resource erzeugt wird, benachrichtigt diese sofort den ResourceOwner. ResourceOwner::onResourceCreated() ist allerdings virtual. Ist das dennoch ok oder problematisch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288987/virtuelle-funktion-aus-ctor</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 13:23:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288987.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Jun 2011 16:51:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Virtuelle Funktion aus Ctor on Sun, 26 Jun 2011 16:51:17 GMT]]></title><description><![CDATA[<p>Abend,</p>
<p>ich habe mal gelesen, dass man aus Ctor keine virtuellen Methoden aufrufen soll.<br />
Nun habe ich folgende Situation:</p>
<pre><code class="language-cpp">class ResourceOwner {
    virtual void onResourceCreated(Resource* r) = 0;
};

class Resource {
   Resource(ResourceOwner* owner) : o(owner) {
      o-&gt;onResourceCreated(this);
   }

   ResourceOwner* o;
};
</code></pre>
<p>Jede Resource hat einen ResourceOwner und wenn eine Resource erzeugt wird, benachrichtigt diese sofort den ResourceOwner. ResourceOwner::onResourceCreated() ist allerdings virtual. Ist das dennoch ok oder problematisch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2084363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2084363</guid><dc:creator><![CDATA[Sinni]]></dc:creator><pubDate>Sun, 26 Jun 2011 16:51:17 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion aus Ctor on Sun, 26 Jun 2011 16:55:12 GMT]]></title><description><![CDATA[<p>Du sollst keine virtuellen Funktionen der Klasse aufrufen, die gerade konstruiert wird! Der Rest ist vollkommen egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2084365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2084365</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 26 Jun 2011 16:55:12 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion aus Ctor on Sun, 26 Jun 2011 16:55:46 GMT]]></title><description><![CDATA[<p>Ja natürlich. Es ist ja eine virtuelle Methode von ResourceOwner. Allerdings muss man bei der Übergabe eines this Zeigers im Ctor immer daran denken, dass evtl. das Objekt noch nicht vollständig initialisiert ist. Wenn der Zeiger aber einfach nur gespeichert wird, ist das kein Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2084366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2084366</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 26 Jun 2011 16:55:46 GMT</pubDate></item></channel></rss>