<?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[Funktoren]]></title><description><![CDATA[<p>Hi, aus einem listing der aktuellen C't habe ich folgendes,..</p>
<pre><code class="language-cpp">struct Sum_A{
int&amp; m_value;
Sum_A(int&amp; value):m_value(value){}
void operator()(const char* beg, const char* end) const
{
m_value+=std::strtol(beg,NULL,10);
}
};
</code></pre>
<p>aufgerufen wird das ganze mit:</p>
<pre><code class="language-cpp">Sum_A(zahl)
</code></pre>
<p>Kann mir jemand bitte im DETAIL erklären wAs da genau passiert?<br />
dankööö</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202183/funktoren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 13:06:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202183.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Jan 2008 16:28:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktoren on Tue, 08 Jan 2008 16:28:05 GMT]]></title><description><![CDATA[<p>Hi, aus einem listing der aktuellen C't habe ich folgendes,..</p>
<pre><code class="language-cpp">struct Sum_A{
int&amp; m_value;
Sum_A(int&amp; value):m_value(value){}
void operator()(const char* beg, const char* end) const
{
m_value+=std::strtol(beg,NULL,10);
}
};
</code></pre>
<p>aufgerufen wird das ganze mit:</p>
<pre><code class="language-cpp">Sum_A(zahl)
</code></pre>
<p>Kann mir jemand bitte im DETAIL erklären wAs da genau passiert?<br />
dankööö</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433139</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Tue, 08 Jan 2008 16:28:05 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren on Tue, 08 Jan 2008 17:56:17 GMT]]></title><description><![CDATA[<p>Zum einen ist dein Aufruf mit Sicherheit nicht der Aufruf, zum anderen spart die c't vielleicht Platz, aber ich gehe davon aus das sie dennoch den Code lesbarer als von dir hingeknallt geschrieben hatte.</p>
<p>Ein Funktor ist ein Objekt das eine Funktionssyntax besitzt. Das heißt, das Objekt muss den ()-operator überladen haben. Das von dir genannte ist aber nur der Konstruktoraufruf.</p>
<p>Kleines Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct A
{
  A(int a)
  : value(a)
  {}

  operator()() const
  { std::cout &lt;&lt; value &lt;&lt; std::endl; }

  private:
    int value;
};

int main()
{
  A a(3); // Konstruktor
  a();    // Funktoraufruf (operator () wird aufgerufen)
}
</code></pre>
<p>Der Operator () kann auch wie in deinen Beispiel Parameter haben. Nur bezweifel ich das dein Beispiel funktioniert (const deklarierte Methode, die einen Member ändert).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433206</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 08 Jan 2008 17:56:17 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren on Tue, 08 Jan 2008 18:33:04 GMT]]></title><description><![CDATA[<p>Hmm durch den operator() kann man eine Objekt-Instanz fast wie eine Funktion nutzen, nur das du halt noch die Eigenschaften einer Klasse dir zu nutzen machen kannst!</p>
<pre><code class="language-cpp">template&lt;typename type&gt;
struct sum
{
    // var to store current sum
    T&amp; m_value;
    // Konstruktor to set destination for sum
    sum(T&amp; value)
        : m_value(value)
    {}
    void operator()(T const&amp; value) { m_value += value; }
};
</code></pre>
<p>So hätte das auch ein wenig mehr sin. Klar, man kann es auch zum Umwandeln von Strings in Zahlen und dann aufsummieren nutzen ... (wenn das original korrekt wäre ...)</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; data(1000, 33);
int sum_data(0);
std::for_each(data.begin(), data.end(), sum&lt;int&gt;(sum_data));
std::cout &lt;&lt; &quot;Summe of \'data\' is &quot; &lt;&lt; sum_data &lt;&lt; std::endl;
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433236</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 08 Jan 2008 18:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren on Tue, 08 Jan 2008 20:30:03 GMT]]></title><description><![CDATA[<p>Das war der originale wortlaut aus der c't, s.185 (22.12.07)</p>
<p>danke leutz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433292</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Tue, 08 Jan 2008 20:30:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren on Tue, 08 Jan 2008 21:32:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>bei mir steht da <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<pre><code class="language-cpp">//einiges davor
rule&lt;&gt; my_list_p = list_p(my_num_p[SumA(sum)], space_p );
//einiges danach
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1433317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433317</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 08 Jan 2008 21:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren on Wed, 09 Jan 2008 00:35:51 GMT]]></title><description><![CDATA[<p>zitat: aufgerufen wird das ganze mit :....<br />
<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>
<p>gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433358</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Wed, 09 Jan 2008 00:35:51 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren on Wed, 09 Jan 2008 06:10:25 GMT]]></title><description><![CDATA[<p>Damit wird er aber immernoch nicht aufgerufen, sondern erzeugt. Aufgerufen wird er vom Parser beim parsen von my_num_p <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1433377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433377</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 09 Jan 2008 06:10:25 GMT</pubDate></item></channel></rss>