<?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[Wie nennt man Event Empfänger?]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Klasse, die sich bei einer anderen registriert und bei der eine Methode aufgerufen wird, wenn ein Event ausgelöst wurde.<br />
In PseudoCode quasi so:</p>
<pre><code class="language-cpp">class Foo { // Ist an Events interessiert
public
   virtual void handleEvent(Bar*  b) = 0;

};

Foo* f = new Foo;
bar-&gt;register???(f); // Wenns ein Event gibt, wird f-&gt;handleEvent() aufgerufen
</code></pre>
<p>Wie nennt man eine Klasse wie Foo? Also ein Ding, das an Events interessiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289312/wie-nennt-man-event-empfänger</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 05:44:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289312.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Jul 2011 13:17:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sat, 02 Jul 2011 13:17:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Klasse, die sich bei einer anderen registriert und bei der eine Methode aufgerufen wird, wenn ein Event ausgelöst wurde.<br />
In PseudoCode quasi so:</p>
<pre><code class="language-cpp">class Foo { // Ist an Events interessiert
public
   virtual void handleEvent(Bar*  b) = 0;

};

Foo* f = new Foo;
bar-&gt;register???(f); // Wenns ein Event gibt, wird f-&gt;handleEvent() aufgerufen
</code></pre>
<p>Wie nennt man eine Klasse wie Foo? Also ein Ding, das an Events interessiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2087677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2087677</guid><dc:creator><![CDATA[Namenssucher]]></dc:creator><pubDate>Sat, 02 Jul 2011 13:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sat, 02 Jul 2011 13:22:09 GMT]]></title><description><![CDATA[<p>Handler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2087679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2087679</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 02 Jul 2011 13:22:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sat, 02 Jul 2011 14:05:05 GMT]]></title><description><![CDATA[<p>Oder auch Observer/Listener</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2087702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2087702</guid><dc:creator><![CDATA[Tobiking2]]></dc:creator><pubDate>Sat, 02 Jul 2011 14:05:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sat, 02 Jul 2011 17:45:16 GMT]]></title><description><![CDATA[<p>Sink<br />
Receiver<br />
Client<br />
Subscriber<br />
...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2087830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2087830</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 02 Jul 2011 17:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sat, 02 Jul 2011 19:02:54 GMT]]></title><description><![CDATA[<p>Der nächste sagt dann bitte 8 Begriffe, immer in Zweierpotenzen weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2087878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2087878</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 02 Jul 2011 19:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sat, 02 Jul 2011 20:35:11 GMT]]></title><description><![CDATA[<p>In C++ sind signals aber eleganter, um Observer/Listener zu implementieren. Man muss nicht wie in Java zig Interfaces definieren, um zu erreichen, was man möchte. Außerdem kann man sich dann die Polymorphie sparen und somit die Indirektion über Zeiger. Dann kann man auch den automatischen Speicher wieder nutzen (ohne new).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2087930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2087930</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 02 Jul 2011 20:35:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sat, 02 Jul 2011 23:28:18 GMT]]></title><description><![CDATA[<p>Wie willst du dir mit &quot;signals&quot; eine Indirektion sparen?<br />
Und was hat das alles jetzt mit automatischem Speicher zu tun?<br />
... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2087957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2087957</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 02 Jul 2011 23:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sun, 03 Jul 2011 08:06:42 GMT]]></title><description><![CDATA[<p>Hm, hatte nen gedanklichen Fehler. Man muss ja ohnehin Zeiger/Referenzen übergeben, also zählt das nicht. Aber man spart sich bei den signals zumindest den polymorphen Aufruf, den man beim Observer-Pattern mit Klassenimplementierung hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2087993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2087993</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sun, 03 Jul 2011 08:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sun, 03 Jul 2011 08:47:32 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Aber man spart sich bei den signals zumindest den polymorphen Aufruf, den man beim Observer-Pattern mit Klassenimplementierung hat.</p>
</blockquote>
<p>Was denkst du, wie Signals intern den Dispatch durchführen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088006</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 03 Jul 2011 08:47:32 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sun, 03 Jul 2011 08:48:58 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Eisflamme schrieb:</p>
<blockquote>
<p>Aber man spart sich bei den signals zumindest den polymorphen Aufruf, den man beim Observer-Pattern mit Klassenimplementierung hat.</p>
</blockquote>
<p>Was denkst du, wie Signals intern den Dispatch durchführen?</p>
</blockquote>
<p>Du sparst dir bei signalen eine Zeiger indirektion (naemlich den der vtable).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088008</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 03 Jul 2011 08:48:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sun, 03 Jul 2011 08:56:41 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Du sparst dir bei signalen eine Zeiger indirektion (naemlich den der vtable).</p>
</blockquote>
<p>Meinst du mit Signale jetzt Funktionszeiger? Ich habe eher an <code>std::function</code> gedacht, weil Funktionszeiger viel weniger mächtiger sind als ein polymorphes Listener-Objekt.</p>
<p>Und ich gehe stark davon aus, dass <code>std::function</code> intern Type Erasure über virtuelle Funktionen verwendet, damit sie mit allen möglichen Funktionsobjekten, Funktionszeigern und Memberfunktionszeigern zurecht kommt. Dann hätten wir wieder die Indirektion über die VTable. Oder übersehe ich etwas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088010</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 03 Jul 2011 08:56:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sun, 03 Jul 2011 09:07:26 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Und ich gehe stark davon aus, dass <code>std::function</code> intern Type Erasure über virtuelle Funktionen verwendet, damit sie mit allen möglichen Funktionsobjekten, Funktionszeigern und Memberfunktionszeigern zurecht kommt. Dann hätten wir wieder die Indirektion über die VTable. Oder übersehe ich etwas?</p>
</blockquote>
<p>Vermutlich tut es das.</p>
<p>Aber prinzipiell sind signale ohne Probleme ohne vtable implentierbar. Da man eine vtable nur brauchen wuerde wenn man type erasure macht, was nicht zwinigend notwendig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088014</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 03 Jul 2011 09:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sun, 03 Jul 2011 09:29:27 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Und ich gehe stark davon aus, dass <code>std::function</code> intern Type Erasure über virtuelle Funktionen verwendet, damit sie mit allen möglichen Funktionsobjekten, Funktionszeigern und Memberfunktionszeigern zurecht kommt. Dann hätten wir wieder die Indirektion über die VTable. Oder übersehe ich etwas?</p>
</blockquote>
<p>Vermutlich tut es das.</p>
<p>Aber prinzipiell sind signale ohne Probleme ohne vtable implentierbar. Da man eine vtable nur brauchen wuerde wenn man type erasure macht, was nicht zwinigend notwendig ist.</p>
</blockquote>
<p><a href="http://www.codeproject.com/KB/cpp/ImpossiblyFastCppDelegate.aspx" rel="nofollow">Hier</a> gibt es eine Implementierung von Delegates ohne vtable. Aber ohne Indirektion kommt man dabei auch nicht aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088023</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Sun, 03 Jul 2011 09:29:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sun, 03 Jul 2011 09:42:02 GMT]]></title><description><![CDATA[<p>&quot;Polymorphe Funktionen&quot; kann man vom Ansatz her <a href="http://pizer.wordpress.com/2009/03/28/a-little-c0x-finger-exercise/" rel="nofollow">so</a> implementieren.</p>
<p>Aber ich meine auch, von zwei Optimierungen gelesen zu haben, die man da noch einbauen könnte:<br />
- Small Function Optimization (umgeht dynamische Allozierung bei kleinen, leicht kopierbaren Funktionsobjekten)<br />
- Verwendung von drei Funktionszeigern (aufrufen,clonen,zerstören) statt virtueller Funktionen einer Basisklasse (reduziert angeblich bei dem ein oder anderen Compiler die Größe des Executables).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088026</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 03 Jul 2011 09:42:02 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man Event Empfänger? on Sun, 03 Jul 2011 11:25:14 GMT]]></title><description><![CDATA[<p>Okay, so weit hatte ich nicht gedacht. Dann fällt wirklich nur höchstens eine Indirektion weg.</p>
<p>Dann ist aber immer noch ein Argument für signals, dass man Klassen für etwas spart, was eigentlich nur eine Verknüpfung anderer Klassen umsetzt und keinen eigenen Zweck hat und daher nicht zwangsläufig die Existenzgrundlage einer Klasse hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2088071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2088071</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sun, 03 Jul 2011 11:25:14 GMT</pubDate></item></channel></rss>