<?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[pro- und epilog code fuer virtuelle funktion]]></title><description><![CDATA[<p>hola leute</p>
<p>bastel grad an einer klasse fuer IPC und hab da zum versenden eine (rein) virtuelle funktion definiert. nun moechte ich, wenn ich von der klasse abgeleitet habe, beim aufruf der virtuellen funktion, vorher und nachher code ausfuehren lassen. gibt es dafuer eine moeglichkeit, das das automatisch passiert ? oder muss ich den code jeweils am anfang und am ende der virtuellen funktion einbauen bzw. aufrufen ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182565/pro-und-epilog-code-fuer-virtuelle-funktion</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 23:41:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182565.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 May 2007 16:59:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to pro- und epilog code fuer virtuelle funktion on Sat, 26 May 2007 16:59:52 GMT]]></title><description><![CDATA[<p>hola leute</p>
<p>bastel grad an einer klasse fuer IPC und hab da zum versenden eine (rein) virtuelle funktion definiert. nun moechte ich, wenn ich von der klasse abgeleitet habe, beim aufruf der virtuellen funktion, vorher und nachher code ausfuehren lassen. gibt es dafuer eine moeglichkeit, das das automatisch passiert ? oder muss ich den code jeweils am anfang und am ende der virtuellen funktion einbauen bzw. aufrufen ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1292742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292742</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sat, 26 May 2007 16:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to pro- und epilog code fuer virtuelle funktion on Sat, 26 May 2007 17:22:31 GMT]]></title><description><![CDATA[<p>Ein <strong>Sentry</strong>, z.B. Stroustrup C++PL $21.3.8 könnte helfen.</p>
<p>Das ist eine Klasse die eigentlich nur einen Konstruktor und einen Destruktor braucht; denn nur in den Funktionen wird etwas geleistet.</p>
<p>Ein formaler Parameter dieses Typs in der Argumentliste der rein virtuellen Funktion müsste den gewünschten Effekt erreichen; er wird vor Funktionseintritt konstruiert(ctor-Aufruf) und beim Verlassen des Funktionskörpers destruiert(dtor-Aufruf).<br />
Zugleich würde der dtor bei Exceptions aufräumen können.</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1292753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292753</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Sat, 26 May 2007 17:22:31 GMT</pubDate></item><item><title><![CDATA[Reply to pro- und epilog code fuer virtuelle funktion on Sat, 26 May 2007 17:16:25 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Wenn es nur genau ein Code-Block wäre der für jede Ableitung mit ausgeführt werden soll wäre es einfach</p>
<pre><code class="language-cpp">class A
{
  virtual void Foo() = 0
  {
    // Hier gemeinsamer Code
  }
};

class B : public A
{
  virtual void Foo()
  {
    // Spezieller Code
    A::Foo(); // Ruft gemeinsamen Code auf
    // Spezieller Code
  }
};
</code></pre>
<p>Das geht natürlich nur für genau einen Code-Block, und es liegt in der Verantwortung von B diesen Code überhaupt aufzurufen.</p>
<p>Eine andere Möglichkeit wäre eine Zwischenfunktion</p>
<pre><code class="language-cpp">class A
{
  public :

  // Hauptfunktion
  void Foo()
  {
    // gemeinsamer Code
    DoFoo();
    // gemeinsamer Code
  }

  protected :

  virtual DoFoo() = 0;

};

class B : public A
{ 
  protected :
  virtual void DoFoo()
  {
    // Spezieller Code
  }
};
</code></pre>
<p>Damit kann A genau steuern wann B etwas machen kann. Dafür kann aber hier A nur genau einen Codeblock aufrufen.</p>
<p>Wenn dein Ablauf noch mehr gemischt ist must du eben mehr Funktionen draus machen .</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1292755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292755</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 26 May 2007 17:16:25 GMT</pubDate></item></channel></rss>