<?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 geht nicht]]></title><description><![CDATA[<p>Hallo ich hab hier 2 klassen erstellt und eine davon soll vererbt werden und enthält eine virtuelle funktion &quot;Update&quot; damit sie automatisch bei der anderen klasse geupdated wird.Leider funktioniert das nicht und ich weiß auch nicht wo der fehler liegen könnte.Ich hoffe ihr könnt mir helfen:</p>
<pre><code>class a
{
public:
	virtual void Update() { MessageBoxA(0,&quot;nenen&quot;,0,0); }

};

class State_GameClass : public a
{
public:
	State_GameClass(void);
	~State_GameClass(void);

	void Initialize();
	void Update();
	void Render();
	void Exit();

};
</code></pre>
<p>(Ist nur ein beispiel ,die klasse die vererbt wird hab ich jetzt nicht ins beispiel genommen)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302437/virtuelle-funktion-geht-nicht</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 07:43:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302437.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Apr 2012 16:37:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 16:37:38 GMT]]></title><description><![CDATA[<p>Hallo ich hab hier 2 klassen erstellt und eine davon soll vererbt werden und enthält eine virtuelle funktion &quot;Update&quot; damit sie automatisch bei der anderen klasse geupdated wird.Leider funktioniert das nicht und ich weiß auch nicht wo der fehler liegen könnte.Ich hoffe ihr könnt mir helfen:</p>
<pre><code>class a
{
public:
	virtual void Update() { MessageBoxA(0,&quot;nenen&quot;,0,0); }

};

class State_GameClass : public a
{
public:
	State_GameClass(void);
	~State_GameClass(void);

	void Initialize();
	void Update();
	void Render();
	void Exit();

};
</code></pre>
<p>(Ist nur ein beispiel ,die klasse die vererbt wird hab ich jetzt nicht ins beispiel genommen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203337</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 18 Apr 2012 16:37:38 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 16:49:22 GMT]]></title><description><![CDATA[<p>Z.b funktioniert das auch nicht :</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

class a
{
public:

	virtual void Update()
	{
       cout &lt;&lt; &quot;Class A&quot; &lt;&lt; endl;
	}
};

class b : public a
{
public:
	void Update()
	{
		cout &lt;&lt; &quot;Class B&quot; &lt;&lt; endl;
	}

};

int main()
{
	b irgendwas;

	irgendwas.Update();

	getchar();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2203342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203342</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 18 Apr 2012 16:49:22 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 16:53:01 GMT]]></title><description><![CDATA[<p>Was funktioniert nicht? Was sind die Fehlermeldungen, die dir dein Compiler ausspuckt?</p>
<p>gruß<br />
syntax</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203344</guid><dc:creator><![CDATA[Syntax_error]]></dc:creator><pubDate>Wed, 18 Apr 2012 16:53:01 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 16:58:13 GMT]]></title><description><![CDATA[<p>Zeig mal ein vollständiges (aber ansonsten auf ein Minimum reduziertes) Beispiel, an dem der Fehler zu sehen ist. Das Beispiel, dass du hier zeigst, ist einfach zu wenig um eine Vermutung anzustellen.</p>
<p>Falls dein Compiler das <code>override</code> Attribut aus dem C++11-Standard schon unterstützt (GCC ab 4.7, Intel ab 12, Microsoft ab 11), dann kannst du damit auch sicherstellen, dass deine überschreibende Methode auch wirklich überschreibt und ansonsten eine Fehlermeldung erzeugt wird.</p>
<p>edit: Was soll denn bitte an deinem zweiten Beispiel nicht funktionieren? Abgesehen davon nutzt du in dem Beispiel gar nicht aus, dass die Methode virtual ist. Kann es sein, dass du gar nicht richtig verstanden hast, was virtual bedeutet und wozu es gut ist?<br />
Zum 2. Beispiel:</p>
<pre><code class="language-cpp">b irgendwas;
    a *was_anderes = &amp;irgendwas;
    was_anderes-&gt;Update(); // Gibt korrekt &quot;Class B&quot; aus.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2203345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203345</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Apr 2012 16:58:13 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:00:54 GMT]]></title><description><![CDATA[<p>Es ging darum,dass ich in einem DirectX 11 Buch gesehen habe ,dass einer Systemclasse kleinere classen wie Grafik/Sound ..blah hinzugefügt wurden und diese classen hatten alle virtuelle Render/Update funktionen damit sie automatisch mit dem Aufruf von Render/Update der Systemclass aufgerufen werden und man somit nicht immer Graphics-&gt;Update(); Sound-&gt;Update(); ... schreiben musste</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203350</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:17:07 GMT]]></title><description><![CDATA[<p>Es soll z.B bei diesen Klassen die virtuelle methode neben der normalen auch noch ausgeführt werden.Da diese virtuell ist müsste sie ja bei der nicht virtuellen auch noch aufgerzufen werden.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class a
{
public:

	virtual void Up() { cout &lt;&lt; &quot;Hi A&quot;&lt;&lt; endl; }
};

class b : public a
{
public :

	void Up() { cout &lt;&lt; &quot;Hi B&quot; &lt;&lt; endl; }

};

int main()
{
	b iwa;
	while(1)
	{
	iwa.Up();
	}
	getchar();
	return 0;
}
</code></pre>
<p>ich bekomme nur &quot;Hi B&quot; und nicht &quot;Hi A&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203355</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:17:07 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:18:29 GMT]]></title><description><![CDATA[<p>Ob du in der abgeleiteten Klasse das virtual hinschreibst oder nicht, ist egal. Die Funktion ist trotzdem virtual. Der Übersicht wegen würde ich es deshalb immer dazuschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203356</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:18:29 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:21:42 GMT]]></title><description><![CDATA[<p>Ja nur bekomme ich kein Hi A ausgegeben sondern nur Hi B</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203358</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:22:21 GMT]]></title><description><![CDATA[<p>Deswegen ja. Das soll so sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203360</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:22:21 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:22:34 GMT]]></title><description><![CDATA[<p>Bob Wolfskin schrieb:</p>
<blockquote>
<p>ich bekomme nur &quot;Hi B&quot; und nicht &quot;Hi A&quot;</p>
</blockquote>
<p>Genau so, wie es sein soll. Du hast da was mit dem <code>virtual</code> in den falschen Hals bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203361</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:22:34 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:24:52 GMT]]></title><description><![CDATA[<p>Du hast virtual völlig falsch verstanden. Was du möchtest, ist aus b::Up() a::Up() aufzurufen, was ja kein Problem ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203362</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:24:52 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:26:23 GMT]]></title><description><![CDATA[<p>Wie geht den das wenn ich von b::Up() a::Up() aufrufen will??<br />
Ich meine in dem DirectX 11 buch hat er das so gemacht ,dass das virtuelle methoden waren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203363</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:26:23 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:35:13 GMT]]></title><description><![CDATA[<p>Bob Wolfskin schrieb:</p>
<blockquote>
<p>Wie geht den das wenn ich von b::Up() a::Up() aufrufen will??<br />
Ich meine in dem DirectX 11 buch hat er das so gemacht ,dass das virtuelle methoden waren...</p>
</blockquote>
<p>virtual ruft immer die nächste am konkreten Objekt definierte Implementierung auf, unabhängig ob du einen Basisklassenzeiger oder einen auf das Konkrete Objekt hast. Wenn du eine virtuelle Up-Methode in A hast, B davon ableitest und diese überschreibst, und davon ein C ableitest ohne diese Methode erneut zu überschreiben wird auf einen Objekt der Klasse B und C die virtuelle Methode von B, auf einem konkreten Objekt vom Typ A die von A aufgerufen, selbst wenn du alle Objekte über einen A-Zeiger ansprichst.</p>
<p>Um die Implementierung einer anderen Klasse in der Hierachie zusätzlich aufzurufen musst du die Anweisung &quot;a::Up();&quot; in deine überschriebene &quot;b::Up()&quot; schreiben:</p>
<pre><code class="language-cpp">b::Up()
{
  a::Up();
}
</code></pre>
<p>Keine weitere &quot;Magie&quot; ist nötig <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/2203367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203367</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:35:13 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 17:43:29 GMT]]></title><description><![CDATA[<p>Ja dann hätte ich ja das gleiche was ich nicht wollte.</p>
<p>Ich möchte ja einfach jeder klasse meine timing klasse hinzufügen ,ohne etwas zu ändern.Deshalb dachte ich ,dass wenn die Timingklasse die gleiche funktion (&quot;Update&quot;) hat ,wird sie auch aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203372</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 18 Apr 2012 17:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 18:03:49 GMT]]></title><description><![CDATA[<p>Bob Wolfskin schrieb:</p>
<blockquote>
<p>Ja dann hätte ich ja das gleiche was ich nicht wollte.</p>
<p>Ich möchte ja einfach jeder klasse meine timing klasse hinzufügen ,ohne etwas zu ändern.Deshalb dachte ich ,dass wenn die Timingklasse die gleiche funktion (&quot;Update&quot;) hat ,wird sie auch aufgerufen.</p>
</blockquote>
<p>Dann bleibt dir noch das folgende Konstrukt:</p>
<pre><code class="language-cpp">class Timing
{
    protected:
        virtual Update_()
        {
        }
    public:
        void Update()
        {
           //...
           Update_();
        }
}
</code></pre>
<p>Eine nicht virtuelle Methode die noch zusätzliche Behandlungen durchführt und dann eine virtuelle aufruft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203378</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 18 Apr 2012 18:03:49 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 18:24:37 GMT]]></title><description><![CDATA[<p>Hab das jetzt so gemacht :</p>
<pre><code>class Timing 
{ 
  protected: 
    virtual void Update_() 
    { 
		cout &lt;&lt; &quot;tighh&quot; &lt;&lt; endl;
    } 
    public: 
        void Update() 
        { 
           //... 
           Update_(); 
        } 
};
class b : public Timing
{
public :

	void Update() { cout &lt;&lt; &quot;Hi B&quot; &lt;&lt; endl; }

};

int main()
{
	b* demo = new b();

	while(1)
	{
	demo-&gt;Update();
	}
	getchar();
	return 0;
}
</code></pre>
<p>Funktioniert immernoch nicht.Die Update() funktion in der Timing klasse wird immernoch nicht aufgerufen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203384</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 18 Apr 2012 18:24:37 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 18:29:30 GMT]]></title><description><![CDATA[<p>Man kann das schon erreichen, was du möchtest, zum Beispiel so (da braucht's noch nicht einmal virtual, alles zur Compilezeit wie von dir beschrieben ausgewertet):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

class A
{
public:
  void update()
  {
    cout &lt;&lt; &quot;Class A&quot; &lt;&lt; endl;
  }
};

class B
{
public:
  void update()
  {
    cout &lt;&lt; &quot;Class B&quot; &lt;&lt; endl;
  }
};

template &lt;typename ... T&gt; class SuperUpdater;

template &lt;typename First, typename ... Rest&gt; class SuperUpdater&lt;First, Rest...&gt;: public First, SuperUpdater&lt;Rest...&gt;
{
public:
  void update() 
  {
    First::update();
    SuperUpdater&lt;Rest...&gt;::update();
  }
};

template&lt;typename T&gt; class SuperUpdater&lt;T&gt;: public T
{
public:
  void update()
  {
    T::update();
  }
};

int main()
{
  SuperUpdater&lt;A, B&gt; ab;
  ab.update();
  SuperUpdater&lt;A&gt; a;
  a.update();
  SuperUpdater&lt;B&gt; b;
  b.update();
}
</code></pre>
<p>Aber ich kann mir beim besten Willen nicht denken, dass ein Directx-Tutorial solch ein Monstrum bringt. Besonders da beim Microsoft-Compiler(den man ja in der der Regel für DirectX benutzen wird) die C++11-Unterstützung mWn noch nicht weit genug ist, um dies überhaupt zu compilieren.</p>
<p>Oben habe ich schon angedeutet, dass virtual eine typische Laufzeittechnik ist. Daher: Du hast da bestimmt etwas falsch verstanden und die Updater registrieren sich zur Laufzeit bei einem anderen Objekt, welche diese dann aufruft.</p>
<p>edit: Im Prinzip ist obiger Code nicht ganz korrekt, da Mehrdeutigkeiten bei Templaterekursion auftreten werden. Aber für ein Forenbeispielprogramm ist mir das gut genug. Wenn jemand Spaß hat, mag er das verbessern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203385</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Apr 2012 18:29:30 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 18:35:43 GMT]]></title><description><![CDATA[<p>Jungs, wo ist der virtuelle dtor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203390</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Wed, 18 Apr 2012 18:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 18:45:27 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3889">@Bob</a> Wolfskin<br />
Und warum rufst du in der Update Methode von b nicht einfach die von Timing auf? Du musst doch eh im Moment der Deklaration wissen, von wem die Klasse erbt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203395</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 18 Apr 2012 18:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 18:45:58 GMT]]></title><description><![CDATA[<p>Werde ich wohl auch so machen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203396</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 18 Apr 2012 18:45:58 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 18:49:55 GMT]]></title><description><![CDATA[<p>cvcv schrieb:</p>
<blockquote>
<p>Jungs, wo ist der virtuelle dtor?</p>
</blockquote>
<p>Der ist zusammen mit den Membern einen heben gegangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203398</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Apr 2012 18:49:55 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 18:56:03 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>cvcv schrieb:</p>
<blockquote>
<p>Jungs, wo ist der virtuelle dtor?</p>
</blockquote>
<p>Der ist zusammen mit den Membern einen heben gegangen.</p>
</blockquote>
<p>Dann hoffen wir mal, dass sie gleichzeitig wieder zurück kommen, und nicht etwa der arme dtor hinterher hinkt <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/2203404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203404</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Wed, 18 Apr 2012 18:56:03 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 18:59:46 GMT]]></title><description><![CDATA[<p>cvcv schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>cvcv schrieb:</p>
<blockquote>
<p>Jungs, wo ist der virtuelle dtor?</p>
</blockquote>
<p>Der ist zusammen mit den Membern einen heben gegangen.</p>
</blockquote>
<p>Dann hoffen wir mal, dass sie gleichzeitig wieder zurück kommen, und nicht etwa der arme dtor hinterher hinkt <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>
</blockquote>
<p>Weil der arme dtor nicht gewohnt ist so viel zu heben, wird er auch in die Notaufnahme gebracht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203405</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Wed, 18 Apr 2012 18:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 19:03:24 GMT]]></title><description><![CDATA[<p>Bob Wolfskin schrieb:</p>
<blockquote>
<p>Hab das jetzt so gemacht :</p>
</blockquote>
<p>Wer lesen kann ist klar im Vorteil.</p>
<p>Du musst schon die virtuelle Methode überschreiben, nicht die nicht-virtuelle. Aufrufen tust du aber die nicht-virtuelle (der Basisklasse, die wiederum die virtuelle intern aufruft).</p>
<p>In deinem Fall:</p>
<pre><code class="language-cpp">class Timing 
{ 
  protected: 
    virtual void Update_() 
    { 
    } 
  public: 
    void Update() 
    { 
      cout &lt;&lt; &quot;Basisfunktionalität&quot; &lt;&lt; endl;
      Update_(); 
    }

    virtual ~Timing() {}
};

class b : public Timing
{
  protected:
    void Update_() { cout &lt;&lt; &quot;Spezielle Funktionalität&quot; &lt;&lt; endl; }
};

int main()
{
    Timing * demo = new b();
    demo-&gt;Update();
    delete demo;
}
</code></pre>
<p>Bob Wolfskin schrieb:</p>
<blockquote>
<p>Funktioniert immernoch nicht.Die Update() funktion in der Timing klasse wird immernoch nicht aufgerufen</p>
</blockquote>
<p>Logisch...</p>
<p>Mein Ansatz ist hier ein anderer: Die Timing-Klasse bietet über Update eine Bsisfunktionalität an, und die interne virtuelle Methode Update_ dient den abgeleiteten Klassen für eine Ergänzung.</p>
<p>Zeus schrieb:</p>
<blockquote>
<p>Weil der arme dtor nicht gewohnt ist so viel zu heben, wird er auch in die Notaufnahme gebracht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>*Der kleine arme virtuelle dtor möchte in der Spielzeugabteilung abgeholt werden* <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/2203406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203406</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 18 Apr 2012 19:03:24 GMT</pubDate></item><item><title><![CDATA[Reply to Virtuelle Funktion geht nicht on Wed, 18 Apr 2012 19:11:57 GMT]]></title><description><![CDATA[<p>Oha, er wurde gefunden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203411</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Wed, 18 Apr 2012 19:11:57 GMT</pubDate></item></channel></rss>