<?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[virtual methode in Ctor]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein Problem mit einer virtuellen Methode, die ich gerne im Ctor aufrufen würde (was ja leider nicht geht):</p>
<pre><code class="language-cpp">class Base {
proteced:
   virtual void createResourceA() = 0; // Das sollen die abgel. Klassen überschreiben
public:
   Base() { createResourceA(); }  // Nach dem Ctor Aufruf sollen die Resourcen angelegt sein
};

class Derived1 : public Base {
proteced:
   virtual void createResourceA() { lege resource A an ... }
public:
   Derived1() { }  
};
</code></pre>
<p>So bräuchte ich das, aber das geht ja nicht, da der Aufruf createResourceA() im Base Ctor leider nicht Derived1::createResourceA() aufruft. Gibt es da einen Trick/Hack, wie ich das lösen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/246826/virtual-methode-in-ctor</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 20:48:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246826.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 02 Aug 2009 14:07:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to virtual methode in Ctor on Sun, 02 Aug 2009 14:07:03 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein Problem mit einer virtuellen Methode, die ich gerne im Ctor aufrufen würde (was ja leider nicht geht):</p>
<pre><code class="language-cpp">class Base {
proteced:
   virtual void createResourceA() = 0; // Das sollen die abgel. Klassen überschreiben
public:
   Base() { createResourceA(); }  // Nach dem Ctor Aufruf sollen die Resourcen angelegt sein
};

class Derived1 : public Base {
proteced:
   virtual void createResourceA() { lege resource A an ... }
public:
   Derived1() { }  
};
</code></pre>
<p>So bräuchte ich das, aber das geht ja nicht, da der Aufruf createResourceA() im Base Ctor leider nicht Derived1::createResourceA() aufruft. Gibt es da einen Trick/Hack, wie ich das lösen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1753993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753993</guid><dc:creator><![CDATA[luka--]]></dc:creator><pubDate>Sun, 02 Aug 2009 14:07:03 GMT</pubDate></item><item><title><![CDATA[Reply to virtual methode in Ctor on Sun, 02 Aug 2009 14:29:07 GMT]]></title><description><![CDATA[<p>Ruf die Funktion doch einfach im ctor von Derived1 auf. Du sagst ja selbst:</p>
<blockquote>
<p>// Nach dem Ctor Aufruf sollen die Resourcen angelegt sein</p>
</blockquote>
<p>und das geht in Base einfach nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754007</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 02 Aug 2009 14:29:07 GMT</pubDate></item><item><title><![CDATA[Reply to virtual methode in Ctor on Sun, 02 Aug 2009 15:21:41 GMT]]></title><description><![CDATA[<p>luka-- schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>ich habe ein Problem mit einer virtuellen Methode, die ich gerne im Ctor aufrufen würde (was ja leider nicht geht):</p>
<pre><code class="language-cpp">class Base {
proteced:
   virtual void createResourceA() = 0; // Das sollen die abgel. Klassen überschreiben
public:
   Base() { createResourceA(); }  // Nach dem Ctor Aufruf sollen die Resourcen angelegt sein
};

class Derived1 : public Base {
proteced:
   virtual void createResourceA() { lege resource A an ... }
public:
   Derived1() { }  
};
</code></pre>
<p>So bräuchte ich das, aber das geht ja nicht, da der Aufruf createResourceA() im Base Ctor leider nicht Derived1::createResourceA() aufruft. Gibt es da einen Trick/Hack, wie ich das lösen kann?</p>
</blockquote>
<p>Oder mach es dir noch einfacher, und lege einfach eine init Funktion an, die jede Klasse implementieren muss.</p>
<pre><code class="language-cpp">class Base
{
 public:
  virtual void init() = 0;
};

class Stuff : public Base
{
 public:
  virtual void init()
  {
   // load Stuff
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1754037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754037</guid><dc:creator><![CDATA[asdasdasd]]></dc:creator><pubDate>Sun, 02 Aug 2009 15:21:41 GMT</pubDate></item></channel></rss>