Problem mit FindIndex Funktion!!
-
Hallo ich habe folgendes Problem,
wenn ich folgende Anweisung:
pos = liste->FindIndex(gcnew Predicate<Int32>(findeKleiner));
in einem Consolen Programm einbinde, dann bekomme ich den Index der ersten Position der Suchfunktion zurück.
Wenn ich das Gleiche in einer WindowsForms Anwendung versuche, mit der gleichen Liste, der gleichen Suchfunktion, bekomme ich beim compilieren eine Fehlermeldung. Leider bin ich über die Hilfefunktion nicht fündig geworden, hatt jemand einen Tipp für mich?
Die Fehlermeldung:
Form1.h(426): error C3867: "generischeListeFormular::Form1::findeKleiner": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&generischeListeFormular::Form1::findeKleiner", um einen Zeiger auf den Member zu erstellen.Danke im Voraus und Gruß
-
Es steht ja in der Fehlermeldung was Du machen musst:
ref class Form1 : public Form { // ... void f() { int pos = liste->FindIndex(gcnew Predicate<Int32>(&Form1::findeKleiner, this)); } bool findeKleiner(int index) { return index < 5; } };
Beschäftige Dich mit Delegaten unter C++/CLI.
-
Also erst einmal Danke.
Den Hinweis mir die Sache mit den Delegaten noch einmal genauer anzusehen werde ich berücksichtigen. Denn leider hat der Codeausschnitt
pos = liste->FindIndex(gcnew Predicate<Int32>(&Form1::findeKleiner,this));
Auch nicht funktioniert, er führte zur Fehlermeldung:
Form1.h(85): error C3364: "System::Predicate<T>": Ungültiges Argument für den Delegatkonstruktor. Delegatziel muss ein Zeiger auf eine Memberfunktion sein.
Gruß
-
Wahrscheinlich habe ich die Argumente vertauscht...
gcnew Predicate<Int32>(this, &Form1::findeKleiner);
Edit
BTW: http://www.c-plusplus.net/forum/263084