<?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[[Designfrage] &amp;quot;Late Execution&amp;quot;]]></title><description><![CDATA[<p>Moin,</p>
<p>ich habe eine kleine Designfrage die folgendes Szenario betrifft(und welches ich nicht genauer benennen konnte, sorry <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ):</p>
<pre><code class="language-cpp">class A{

    void doSomething(int i){}

    void doSomething2(double){}
};
</code></pre>
<p>Und zwar würde ich gerne beim Aufruf von doSomething nicht wirklich Code ausführen lassen, sondern lediglich die Information speichern, dass doSomething, doSomething2 aufgerufen wurden. Die übergebenen Parameter sollten natürlich ebenfalls in dieser Information enthalten sein.</p>
<p>Dies hat folgenden Hintergrund:<br />
Ich bin momentan dabei einigen Code von der darunterliegenden Implementierung zu abstrahieren/in andere Sinneinheiten zu zerlegen. Dabei würde ich die Stellen, an denen implementierungsspezifischer Code vorkommt gerne minimieren. D.h. die einzelnen Klassen der Implementierung einfach nur zu wrappen wäre doof <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="😉"
    /> Vielmehr hätte ich den implementierungsabhängigen Code gerne an einer Stelle, der dann nur noch eine Instanz von A enthält und die gespeicherten Methodenaufrufe entsprechend der Implementierung umsetzt.</p>
<p>Ich habe auch schon einige Ansätze mit std::function/function-pointer durchprobiert, allerdings finde ich meine eigenen Ansätze meist hässlicher als diejenigen, über die sich schlauere Leute schon deutlich länger den Kopf zerbrochen haben :p</p>
<p>Also wie löse ich dies am geschicktesten bzw. wonach muss ich googlen, um mir eine geschickte Lösung angucken zu können?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282610/designfrage-quot-late-execution-quot</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 01:37:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282610.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Feb 2011 02:21:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Designfrage] &amp;quot;Late Execution&amp;quot; on Wed, 23 Feb 2011 02:21:35 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich habe eine kleine Designfrage die folgendes Szenario betrifft(und welches ich nicht genauer benennen konnte, sorry <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ):</p>
<pre><code class="language-cpp">class A{

    void doSomething(int i){}

    void doSomething2(double){}
};
</code></pre>
<p>Und zwar würde ich gerne beim Aufruf von doSomething nicht wirklich Code ausführen lassen, sondern lediglich die Information speichern, dass doSomething, doSomething2 aufgerufen wurden. Die übergebenen Parameter sollten natürlich ebenfalls in dieser Information enthalten sein.</p>
<p>Dies hat folgenden Hintergrund:<br />
Ich bin momentan dabei einigen Code von der darunterliegenden Implementierung zu abstrahieren/in andere Sinneinheiten zu zerlegen. Dabei würde ich die Stellen, an denen implementierungsspezifischer Code vorkommt gerne minimieren. D.h. die einzelnen Klassen der Implementierung einfach nur zu wrappen wäre doof <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="😉"
    /> Vielmehr hätte ich den implementierungsabhängigen Code gerne an einer Stelle, der dann nur noch eine Instanz von A enthält und die gespeicherten Methodenaufrufe entsprechend der Implementierung umsetzt.</p>
<p>Ich habe auch schon einige Ansätze mit std::function/function-pointer durchprobiert, allerdings finde ich meine eigenen Ansätze meist hässlicher als diejenigen, über die sich schlauere Leute schon deutlich länger den Kopf zerbrochen haben :p</p>
<p>Also wie löse ich dies am geschicktesten bzw. wonach muss ich googlen, um mir eine geschickte Lösung angucken zu können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025065</guid><dc:creator><![CDATA[Matzer]]></dc:creator><pubDate>Wed, 23 Feb 2011 02:21:35 GMT</pubDate></item><item><title><![CDATA[Reply to [Designfrage] &amp;quot;Late Execution&amp;quot; on Wed, 23 Feb 2011 06:27:44 GMT]]></title><description><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Befehlsmuster" rel="nofollow">Command Pattern</a> vielleicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025074</guid><dc:creator><![CDATA[C Newbie]]></dc:creator><pubDate>Wed, 23 Feb 2011 06:27:44 GMT</pubDate></item><item><title><![CDATA[Reply to [Designfrage] &amp;quot;Late Execution&amp;quot; on Wed, 23 Feb 2011 08:01:54 GMT]]></title><description><![CDATA[<p>Für sowas bietet sich <code>boost::bind</code> an und <code>boost::function</code> an<br />
Beispiel:</p>
<pre><code class="language-cpp">class A
{

    void doSomething(int i){}

    void doSomething2(double){}
}; 	

A a;
std::queue&lt;boost::function&lt;void ()&gt; commandQueue;

//irgendwo spaeter zur spaeteren Ausfuehrung speichern:
commandQueue.push(boost::bind(&amp;A::doSomething, &amp;a, 42);

//noch spaeter die Funktion ausfuehren:
commandQueue.front()(); //-&gt;a.doSomething(42);

//aus der Queue schmeissen
commandQueue.pop();
</code></pre>
<p><em>PS: Wenn Dein Compiler <code>tr1</code> -Unterstützung hat, dann brauchst Du nichteinmal boost. Dann gibts das freihaus.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025094</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 23 Feb 2011 08:01:54 GMT</pubDate></item></channel></rss>