<?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[Funktionszeiger für Template klasse]]></title><description><![CDATA[<p>Hi ich bin neu hier und hoffe auf eine gute Community^^</p>
<p>nun ja ich<br />
Ich habe eine Templateklasse liste<br />
und diese klasse besitzt eine Methode finden()</p>
<p>nun möchte ich ein funktions zeiger als parameter übergebe.<br />
Die funktion für den funktionszeiger soll dann z.b eine bedingung beinhalten wonach gesucht wird</p>
<p>(nur zur vollständigkeit, ich bin am proggen eines ADS Baums)<br />
so ist das ganze aufgebaut</p>
<pre><code class="language-cpp">template&lt;class typ1, class typ2&gt;
bool finde(bool (*fz)(typ1, typ2), typ2 name, T erg) //T ist der Haupttyp der klasse
{
    //schleife zum durchlaufen der Liste
         if (fz(temp-&gt;info, name))  //temp ist ein zeiger auf ein struct 
         {
             erg = temp-&gt;info;
             return true;
         }
     return false;
}
</code></pre>
<p>Nun möchte ich das ganze in meiner Baumklasse aufrufen</p>
<pre><code class="language-cpp">bool Baum::Entf(int name, int &amp;erg)
{
    //da ich noch nicht soweit bin mit dem durchsuchen des baumes nehm ich die wuzel
    Baum_S* Pos;    
    if(wurzel-&gt;verzw.finde(delegate, int 5, Pos)
    { //...//}
}

bool Baum::delegate(Baum_S *verzw, int name)
{   //Baum_S ist ein struct 
    // kap ist der name des zweiges / ast wie auch immer
    if (verzw-&gt;kap == name)
        return true;

     return false;
}
</code></pre>
<p>problem ist das er mir den fehler<br />
&quot;keine Übereinstimmung für Liste<a href="Baum::Baum_S*" rel="nofollow">Baum::Baum_S*</a>::Finde(Void) gefunden&quot;<br />
Stelle: if(wurzel-&gt;verzw.Finde(delegate)<br />
ausgibt!<br />
wo ist mein fehler ^^</p>
<p>sorry für den unvollständigen code aber sonst wirds zuviel ^^</p>
<p>PS: Auserhalb einer Klasse funktioniert das ganze!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/280122/funktionszeiger-für-template-klasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 07:09:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280122.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Jan 2011 23:53:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionszeiger für Template klasse on Mon, 10 Jan 2011 14:50:03 GMT]]></title><description><![CDATA[<p>Hi ich bin neu hier und hoffe auf eine gute Community^^</p>
<p>nun ja ich<br />
Ich habe eine Templateklasse liste<br />
und diese klasse besitzt eine Methode finden()</p>
<p>nun möchte ich ein funktions zeiger als parameter übergebe.<br />
Die funktion für den funktionszeiger soll dann z.b eine bedingung beinhalten wonach gesucht wird</p>
<p>(nur zur vollständigkeit, ich bin am proggen eines ADS Baums)<br />
so ist das ganze aufgebaut</p>
<pre><code class="language-cpp">template&lt;class typ1, class typ2&gt;
bool finde(bool (*fz)(typ1, typ2), typ2 name, T erg) //T ist der Haupttyp der klasse
{
    //schleife zum durchlaufen der Liste
         if (fz(temp-&gt;info, name))  //temp ist ein zeiger auf ein struct 
         {
             erg = temp-&gt;info;
             return true;
         }
     return false;
}
</code></pre>
<p>Nun möchte ich das ganze in meiner Baumklasse aufrufen</p>
<pre><code class="language-cpp">bool Baum::Entf(int name, int &amp;erg)
{
    //da ich noch nicht soweit bin mit dem durchsuchen des baumes nehm ich die wuzel
    Baum_S* Pos;    
    if(wurzel-&gt;verzw.finde(delegate, int 5, Pos)
    { //...//}
}

bool Baum::delegate(Baum_S *verzw, int name)
{   //Baum_S ist ein struct 
    // kap ist der name des zweiges / ast wie auch immer
    if (verzw-&gt;kap == name)
        return true;

     return false;
}
</code></pre>
<p>problem ist das er mir den fehler<br />
&quot;keine Übereinstimmung für Liste<a href="Baum::Baum_S*" rel="nofollow">Baum::Baum_S*</a>::Finde(Void) gefunden&quot;<br />
Stelle: if(wurzel-&gt;verzw.Finde(delegate)<br />
ausgibt!<br />
wo ist mein fehler ^^</p>
<p>sorry für den unvollständigen code aber sonst wirds zuviel ^^</p>
<p>PS: Auserhalb einer Klasse funktioniert das ganze!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2004731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2004731</guid><dc:creator><![CDATA[Spy-Shifty]]></dc:creator><pubDate>Mon, 10 Jan 2011 14:50:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger für Template klasse on Mon, 10 Jan 2011 05:26:02 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>mal davon abgesehen das du die methode <strong>F</strong>inde und nicht <strong>f</strong>inde aufrufst, stimmen auch die parameter nicht. die funktion fordert 3 parameter von dir, du uebergibst aber nur einen.<br />
was ist von fz(dein funktionspointer) der return typ ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2004767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2004767</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Mon, 10 Jan 2011 05:26:02 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger für Template klasse on Mon, 10 Jan 2011 14:49:44 GMT]]></title><description><![CDATA[<p>ja sry hab ein paar parameter fergessen aber trotz alle dem ändert das nichts an der fehlermeldung!</p>
<p>ps habs oben editiert</p>
<p>mfg Spy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2004943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2004943</guid><dc:creator><![CDATA[Spy-Shifty]]></dc:creator><pubDate>Mon, 10 Jan 2011 14:49:44 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger für Template klasse on Mon, 10 Jan 2011 15:55:38 GMT]]></title><description><![CDATA[<p>Vielleicht solltest du dir die STL mal genauer ansehen und gucken, wie das Suchen über Prädikate gelöst wird. Finde ich deutlich schöner als Zeiger auf Funktionen, und ausserdem erlaubt es dem Compiler, besser zu optimieren und schnelleren Code zu erzeugen.</p>
<p>PS:<br />
Ohne Iterator Konzept würde ich als Suchergebnis einen Zeiger auf den Treffer zurückgeben und im Falle einer erfolglosen Suche 0. Spart jedenfalls den Referenzparameter erg, den man vor einem find Aufruf lokal deklarieren muss, was ich unschön finde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2004992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2004992</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 10 Jan 2011 15:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger für Template klasse on Mon, 10 Jan 2011 16:08:23 GMT]]></title><description><![CDATA[<p>Spy-Shifty schrieb:</p>
<blockquote>
<p>ja sry hab ein paar parameter fergessen aber trotz alle dem ändert das nichts an der fehlermeldung!</p>
</blockquote>
<p>Doch ändert es bestimmt.</p>
<blockquote>
<p>&quot;keine Übereinstimmung für Liste<a href="Baum::Baum_S*" rel="nofollow">Baum::Baum_S*</a>::Finde(Void) gefunden&quot;</p>
</blockquote>
<p>heißt es nur, wenn du noch irgendwo <code>Finde</code> groß geschrieben hast und keine argumente übergibst. Schreib hier genau den Code rein der einen Fehler produziert. Und dann genau die Fehlermeldung dazu.</p>
<p>Und DocShoe hat es ja schon angedeutet, dass dein finde template viel einfacher so geschrieben werden kann:</p>
<pre><code class="language-cpp">template&lt;typename Pred, typename typ2&gt;
bool finde(Pred f, typ2 name, T&amp; erg) //T ist der Haupttyp der klasse
{
         if (f(temp-&gt;info, name))
         {
             erg = temp-&gt;info;
             return true;
         }
     return false;
}
</code></pre>
<p>Ich nehm mal an, dass Du den gefundenen Wert in <code>erg</code> speichern möchtest oder so. Dann solltest du das auch als Referenz übergeben ( <code>T&amp;</code> ).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005009</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Mon, 10 Jan 2011 16:08:23 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger für Template klasse on Mon, 10 Jan 2011 19:37:16 GMT]]></title><description><![CDATA[<p>danke für die Antworten!<br />
ich werd das mal ausprobieren</p>
<p>mfg Spy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005084</guid><dc:creator><![CDATA[Spy-Shifty]]></dc:creator><pubDate>Mon, 10 Jan 2011 19:37:16 GMT</pubDate></item></channel></rss>