<?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[Frage zu __closure]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich nutze den C++Builder 6 und will dabei Callback-Funktionen nutzen. Ansich funktioniert das auch sehr gut, außer in einem Fall.<br />
Ich habe zwei Methoden, die in der selben Klasse den gleichen Namen haben und sich nur durch die Parameterliste unterscheiden. Wenn ich nun dem Pointer auf die Funktion setzen will, zeigt mir der C++Builder an, dass er die Methode nicht eindeutig identifizieren kann.</p>
<p>Hier die Fehlermeldung:</p>
<blockquote>
<p>[C++ Fehler] MainForm.cpp(4080): E2336 Zeiger auf überladene Funktion 'TFormMain::ClearHintText' stimmt nicht mit 'void (_fastcall * (_closure )())()' überein</p>
</blockquote>
<p>Und die Stelle im Code</p>
<pre><code class="language-cpp">FormSetup-&gt;ClearHintText = ClearHintText;
</code></pre>
<p>Die Methode ClearHintText gibt es mit den Parametern (void) oder mit (char *errText). Kann mir jemand sagen, wie ich in diesem Fall eine eindeutige Zuweisung bekomme?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/116542/frage-zu-__closure</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 01:00:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/116542.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 28 Jul 2005 06:34:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu __closure on Thu, 28 Jul 2005 06:34:13 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich nutze den C++Builder 6 und will dabei Callback-Funktionen nutzen. Ansich funktioniert das auch sehr gut, außer in einem Fall.<br />
Ich habe zwei Methoden, die in der selben Klasse den gleichen Namen haben und sich nur durch die Parameterliste unterscheiden. Wenn ich nun dem Pointer auf die Funktion setzen will, zeigt mir der C++Builder an, dass er die Methode nicht eindeutig identifizieren kann.</p>
<p>Hier die Fehlermeldung:</p>
<blockquote>
<p>[C++ Fehler] MainForm.cpp(4080): E2336 Zeiger auf überladene Funktion 'TFormMain::ClearHintText' stimmt nicht mit 'void (_fastcall * (_closure )())()' überein</p>
</blockquote>
<p>Und die Stelle im Code</p>
<pre><code class="language-cpp">FormSetup-&gt;ClearHintText = ClearHintText;
</code></pre>
<p>Die Methode ClearHintText gibt es mit den Parametern (void) oder mit (char *errText). Kann mir jemand sagen, wie ich in diesem Fall eine eindeutige Zuweisung bekomme?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/840495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/840495</guid><dc:creator><![CDATA[DarkGuardian]]></dc:creator><pubDate>Thu, 28 Jul 2005 06:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu __closure on Thu, 28 Jul 2005 09:41:55 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>kann ich nicht nachvollziehen. Ich hab mal ein Beispiel nachgebaut</p>
<pre><code class="language-cpp">typedef void __fastcall (__closure *TTestEvent1)(char *errText);
typedef void __fastcall (__closure *TTestEvent2)(void);
...
void __fastcall TForm1::Test1(char *errText)
{
  }

void __fastcall TForm1::Test2(void)
{
  }
...
  TTestEvent1 MyEvent1;
  MyEvent1 = Test1; // geht
//  MyEvent1 = Test2; // geht nicht, wie zu nerwarten
  TTestEvent2 MyEvent2;
//  MyEvent2 = Test1; // geht nicht, wie zu erwarten
  MyEvent2 = Test2; // geht
</code></pre>
<p>Das Problem muß woanders liegen. Schreib dohc mal die genauen Definitionen der beteilgiten Typen und Methoden.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/840632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/840632</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 28 Jul 2005 09:41:55 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu __closure on Thu, 28 Jul 2005 09:46:33 GMT]]></title><description><![CDATA[<p>In seinem Fall heißen wohl beide Methode Test1 bzw. ClearHintText...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/840638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/840638</guid><dc:creator><![CDATA[-**xXx**-]]></dc:creator><pubDate>Thu, 28 Jul 2005 09:46:33 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu __closure on Thu, 28 Jul 2005 09:49:16 GMT]]></title><description><![CDATA[<p>Wie du vielleicht an deinem eigenen Beispiel sehen kannst, unterscheiden sich deine beiden Methoden nicht nur in der Parameterliste.</p>
<p>Nenne doch mal beide Test und versuche das noch einmal (also ohne die Nummern dahinter).</p>
<p>Das dürfte bei dir dann auch nicht klappen (oder ich habe wirklich einen anderen Fehler).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/840643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/840643</guid><dc:creator><![CDATA[DarkGuardian]]></dc:creator><pubDate>Thu, 28 Jul 2005 09:49:16 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu __closure on Thu, 28 Jul 2005 09:58:59 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>achso, klar überladene Methoden.<br />
Tja, Ich seh da außer dem Vergeben von unterschiedlichen Namen nur die Möglichkeit einer einzelnen Methode, die dann für den char-parameter den Standardwert NULL bekommt. Dann kannst du in der Methode entscheiden, welche Variante du ausführst.<br />
Und kannst immer noch die Methode mit beiden Varianten aufrufen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/840654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/840654</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 28 Jul 2005 09:58:59 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu __closure on Thu, 28 Jul 2005 10:08:06 GMT]]></title><description><![CDATA[<p>Danke für den Hinweis. Sowas habe ich leider schon befürchtet. Gibt es denn einen anderen Weg, zwei Klassen in diesem Fall von einander zu kapseln?</p>
<p>In meinem Fall sollen die beiden Klassen von einander getrennt werden, weil sonst bei jeder Änderung an einer ein ganzer Haufen von Klassen compiliert werden muss. Dann heißt es erst mal 10-15min warten, was nicht sehr sinnvoll ist.<br />
Vielleicht kennt hier ja jemand noch eine andere Möglichkeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/840666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/840666</guid><dc:creator><![CDATA[DarkGuardian]]></dc:creator><pubDate>Thu, 28 Jul 2005 10:08:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu __closure on Thu, 28 Jul 2005 10:26:20 GMT]]></title><description><![CDATA[<p>Nur kurz zur Info:<br />
Ich habe jetzt beide Methode zusammengenommen. Dann geht es natürlich mit __closure wieder.</p>
<p>Daher ist meine letzte Anfrage eher von allgemeiner Natur. Vielleicht kennt da ja jemand einen Trick oder sowas. Oder man sollte mal bei Borland direkt anfragen, denn wahrscheinlich ist das von denen doch auch nicht so gedacht, oder?</p>
<p>Trotzdem nochmal Danke *g*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/840682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/840682</guid><dc:creator><![CDATA[DarkGuardian]]></dc:creator><pubDate>Thu, 28 Jul 2005 10:26:20 GMT</pubDate></item></channel></rss>