<?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[Funktionen aus Klassen übergeben]]></title><description><![CDATA[<p>Hi</p>
<p>ist wahrscheinlich ne stupide Frage, aber ich komme nicht weiter...</p>
<p>Ich will die Funktion</p>
<pre><code class="language-cpp">int scandir(const char *dir, struct dirent ***namelist,
              int(*filter)(const struct dirent *),
              int(*compar)(const struct dirent **, const struct dirent **));
</code></pre>
<p>verwenden, und zwar wie folgt:</p>
<pre><code class="language-cpp">int NumberOfFiles = scandir(xmldir.c_str(), &amp;dirlist, CheckIfNeeded, alphasort);
</code></pre>
<p>CheckIfNeeded ist dabei Element der selben Klasse cWThread, in welcher auch die Funktion ist, die scandir aufruft. Jetzt erhalte ich folgenden Fehler beim Kompilieren:</p>
<pre><code>wthread.c:86: error: argument of type ‘int (cWThread::)(const dirent*)’ does not match ‘int (*)(const dirent*)’
</code></pre>
<p>Was muss ich ändern??</p>
<p>Mfg,<br />
balta</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148029/funktionen-aus-klassen-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 12:59:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148029.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 May 2006 17:47:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionen aus Klassen übergeben on Mon, 22 May 2006 17:47:08 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>ist wahrscheinlich ne stupide Frage, aber ich komme nicht weiter...</p>
<p>Ich will die Funktion</p>
<pre><code class="language-cpp">int scandir(const char *dir, struct dirent ***namelist,
              int(*filter)(const struct dirent *),
              int(*compar)(const struct dirent **, const struct dirent **));
</code></pre>
<p>verwenden, und zwar wie folgt:</p>
<pre><code class="language-cpp">int NumberOfFiles = scandir(xmldir.c_str(), &amp;dirlist, CheckIfNeeded, alphasort);
</code></pre>
<p>CheckIfNeeded ist dabei Element der selben Klasse cWThread, in welcher auch die Funktion ist, die scandir aufruft. Jetzt erhalte ich folgenden Fehler beim Kompilieren:</p>
<pre><code>wthread.c:86: error: argument of type ‘int (cWThread::)(const dirent*)’ does not match ‘int (*)(const dirent*)’
</code></pre>
<p>Was muss ich ändern??</p>
<p>Mfg,<br />
balta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062981</guid><dc:creator><![CDATA[balta]]></dc:creator><pubDate>Mon, 22 May 2006 17:47:08 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen aus Klassen übergeben on Mon, 22 May 2006 17:57:40 GMT]]></title><description><![CDATA[<p>Das geht schlicht &amp; einfach so nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1062989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1062989</guid><dc:creator><![CDATA[bluecode]]></dc:creator><pubDate>Mon, 22 May 2006 17:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen aus Klassen übergeben on Mon, 22 May 2006 18:18:17 GMT]]></title><description><![CDATA[<p>bluecode schrieb:</p>
<blockquote>
<p>Das geht schlicht &amp; einfach so nicht.</p>
</blockquote>
<p>Wie dann?? Habe CheckIfNeeded schon aus der Klasse rausgenommen und es geht... nur dann müsste ich noch mehr &quot;auslagern&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063003</guid><dc:creator><![CDATA[balta]]></dc:creator><pubDate>Mon, 22 May 2006 18:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen aus Klassen übergeben on Mon, 22 May 2006 18:29:45 GMT]]></title><description><![CDATA[<p>balta schrieb:</p>
<blockquote>
<p>bluecode schrieb:</p>
<blockquote>
<p>Das geht schlicht &amp; einfach so nicht.</p>
</blockquote>
<p>Wie dann?? Habe CheckIfNeeded schon aus der Klasse rausgenommen und es geht... nur dann müsste ich noch mehr &quot;auslagern&quot;</p>
</blockquote>
<p>Jo, genau nur so gehts. Du kannst net einfach nen Zeiger auf ne Memberfunktion übergeben, wenn die Funktion nur einen normalen Funktionszeiger erwartet, da das Aufrufen von Memberfunktionen anders funktioniert(es muss ja schließlich im Funktionspointer auch ein Zeiger auf die Klasse vorhanden sein, um später der Funktion einen this-&gt; zur Verfügung zu stellen) ist als das von normalen Funktionen. Also entweder die aufzurufende Funktion verändern, was wahrscheinlich nicht gehen wird, ne globale Funktion oder aber eine static Memberfunktion (=&gt; kein this Zeiger verwendbar) übergeben.<br />
Wenns deine Klasse nur einmal gibt (im ges. Programm) dann kannst nen Singleton draus machen und ne static memberfunktion, dann kannst in der memberfunktion sogar ne klasseninstanz verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063009</guid><dc:creator><![CDATA[bluecode]]></dc:creator><pubDate>Mon, 22 May 2006 18:29:45 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen aus Klassen übergeben on Mon, 22 May 2006 18:46:05 GMT]]></title><description><![CDATA[<pre><code>wthread.h:33: error: invalid use of member ‘cWThread::NeededFiles’ in static member function
wthread.c:106: error: from this location
</code></pre>
<p>meintest du das mit fehlendem this??</p>
<p>das mit dem singleton scheint ja komplizierter zu sein. Auch wenn es von dieser Klasse nur ein Objekt gleichzeitig gibt, werde ich dann wohl doch auslagern müssen.</p>
<p>Danke aber für die Hilfe,</p>
<p>balta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063029</guid><dc:creator><![CDATA[balta]]></dc:creator><pubDate>Mon, 22 May 2006 18:46:05 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen aus Klassen übergeben on Mon, 22 May 2006 18:49:49 GMT]]></title><description><![CDATA[<p>balta schrieb:</p>
<blockquote>
<p>meintest du das mit fehlendem this??</p>
</blockquote>
<p>Das bedeutet, dass du keine Instanz der Klasse beim Funktionsaufruf bekommst, d.h. du hast keine Chance auf irgendwelche Member zuzugreifen.</p>
<p>balta schrieb:</p>
<blockquote>
<p>das mit dem singleton scheint ja komplizierter zu sein. Auch wenn es von dieser Klasse nur ein Objekt gleichzeitig gibt...</p>
</blockquote>
<p>Ein normales Singleton is net schwer: Private Konstruktoren/Destruktor, eine statische Funktion ala &quot;klasse &amp;getInstance()&quot; mit der sich die einzige Instanz herkriegen lässt und dann noch die Instanz als statischen Member (Die Instanz musst dann in der Sourcecodedatei noch definieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063037</guid><dc:creator><![CDATA[bluecode]]></dc:creator><pubDate>Mon, 22 May 2006 18:49:49 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen aus Klassen übergeben on Tue, 23 May 2006 09:12:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>zu Singleton<br />
<a href="http://www.oop-trainer.de/Themen/Singleton.html" rel="nofollow">http://www.oop-trainer.de/Themen/Singleton.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063335</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 23 May 2006 09:12:15 GMT</pubDate></item></channel></rss>