<?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[std::tr1::function -&amp;gt; Funktionspointer]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe folgenden Code:</p>
<pre><code class="language-cpp">typedef void (*FuncType)(void*);

class Class {
    FuncType F;
    void foo(void *UserData) {/**/}
    void binde() {
        std::tr1::function&lt;void(void*)&gt; f = std::tr1::bind(&amp;Class::Foo, this, std::tr1::placeholders::_1);
        F = f; //Fehler
    }
};
</code></pre>
<p>Der oben genannte Fehler ist, std::tr1::function könne nicht nach FuncType konvertiert werden.</p>
<p>Wie kann man das Problem lösen?</p>
<p>Danke schon im Voraus!</p>
<p>mfg<br />
Mr X</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257137/std-tr1-function-gt-funktionspointer</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 14:51:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257137.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Dec 2009 14:52:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::tr1::function -&amp;gt; Funktionspointer on Wed, 23 Dec 2009 14:52:23 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe folgenden Code:</p>
<pre><code class="language-cpp">typedef void (*FuncType)(void*);

class Class {
    FuncType F;
    void foo(void *UserData) {/**/}
    void binde() {
        std::tr1::function&lt;void(void*)&gt; f = std::tr1::bind(&amp;Class::Foo, this, std::tr1::placeholders::_1);
        F = f; //Fehler
    }
};
</code></pre>
<p>Der oben genannte Fehler ist, std::tr1::function könne nicht nach FuncType konvertiert werden.</p>
<p>Wie kann man das Problem lösen?</p>
<p>Danke schon im Voraus!</p>
<p>mfg<br />
Mr X</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826808</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:52:23 GMT</pubDate></item><item><title><![CDATA[Reply to std::tr1::function -&amp;gt; Funktionspointer on Wed, 23 Dec 2009 14:55:44 GMT]]></title><description><![CDATA[<p>Du kannst natürlich einem einfachen Funktionszeiger kein generisches Callable wie <code>std::tr1::function</code> zuweisen, dafür ist dieses viel zu komplex. Wenn du unbedingt einen Funktionszeiger brauchst, schreibe dir eine Funktion dafür. Aber wieso arbeitest du nicht gleich mit <code>std::tr1::function</code> weiter?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826811</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Dec 2009 14:55:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::tr1::function -&amp;gt; Funktionspointer on Wed, 23 Dec 2009 15:06:00 GMT]]></title><description><![CDATA[<p>Ich würde zu gerne mit std::tr1::function weiterarbeiten. Leider will SFML einen normalen Funktionspointer.</p>
<p>Kann man vielleicht mit bind1st die Memberfunktion binden und dies dann konvertieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826816</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to std::tr1::function -&amp;gt; Funktionspointer on Wed, 23 Dec 2009 15:20:46 GMT]]></title><description><![CDATA[<p>Mr X schrieb:</p>
<blockquote>
<p>Leider will SFML einen normalen Funktionspointer.</p>
</blockquote>
<p>Wo genau brauchst du das? Bei <code>sf::Thread</code> ? Dort bestünde ja eine Alternative darin, von der Klasse zu erben.</p>
<p>Mr X schrieb:</p>
<blockquote>
<p>Kann man vielleicht mit bind1st die Memberfunktion binden und dies dann konvertieren?</p>
</blockquote>
<p>Mit den Dingen aus <code>&lt;functional&gt;</code> kannst du nur Funktionsobjekte erzeugen, keine Funktionen. Das musst du in C++ nach wie vor von Hand erledigen.</p>
<p>Aber du kannst dir ja statt von <code>std::tr1::bind()</code> einen Funktor erzeugen lassen eine eigene Funktion schreiben?</p>
<pre><code class="language-cpp">// Packt die Aufrufklasse und die Daten zusammen
struct Data
{
    Class*     c; // Verweis auf deine Klasse
    ActualData d; // Deine eigentlichen Transportdaten (evtl. auch Zeiger)
};

void ThreadFunction(void* UserData)
{
    Data* MyData = static_cast&lt;Data*&gt;(UserData);
    MyData.c-&gt;foo(MyData.d);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1826828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826828</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Dec 2009 15:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to std::tr1::function -&amp;gt; Funktionspointer on Wed, 23 Dec 2009 17:46:36 GMT]]></title><description><![CDATA[<p>Danke für die Antwort.</p>
<p>Ich habe jetzt die UserData-Variable zur Übergabe des this-Zeigers verwendet und die Run-Methode statisch gemacht. Funktioniert jetzt.</p>
<p>mfg<br />
Mr X</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826930</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Wed, 23 Dec 2009 17:46:36 GMT</pubDate></item></channel></rss>