Probleme mit funktionspointer zuweisung
-
Hallo
ich versuche momentan in meinem programm funktionspointer zu verwenden. jedoch bekomm ich folgenden compilerfehler wenn ich den pointer zuweisen möchte.
d:\Visual Studio Projects\RenameTool\Form1.cpp(295): error C2276: '&': Ungültige Operation auf Ausdruck einer gebundenen Memberfunktion
und hier kommen die dazugehörigen methoden.
System::Boolean RenameTool::Form1::SortAToZ(String *Value1,String *Value2){ //Method returns true if Value1 is less then Value2 other then that ist returns false for(long nK=0;nK<Value1->get_Length()&&nK<Value2->get_Length();nK++){ if(Value1->get_Chars(nK)<Value2->get_Chars(nK)){ return true; } } return false; } System::Void RenameTool::Form1::sortFP(ArrayList *List,System::Boolean (*pFkt)(String *,String *)) { FileListItem *castedItems[]=new FileListItem*[List->get_Count()]; for(long nI=0;nI<List->get_Count();nI++){ castedItems[nI]=__try_cast<FileListItem*>(List->get_Item(nI)); if(nI>0){ List->RemoveAt(nI); long nJ; for(nJ=0;nJ<=nI&&!pFkt(castedItems[nJ]->Name,castedItems[nI]->Name);nJ++); List->Insert(nJ-1,castedItems[nI]); } } }
und hier ist meine zuweisung bei der es dann zum fehler kommt.
this->pFolderSortMethod=&SortAToZ;
mit hilfe der msdn hilfe hab ich die zeile dann wie folgt verändert (funktioniert aber auch nicht)
(RenameTool::Form1::pFolderSortMethod)(String *,String *)=&RenameTool::Form1::SortAToZ;
in der .h datei habe ich die variable und die methoden wie folgt deklariert
System::Boolean (*pFolderSortMethod)(String *,String *); System::Boolean SortAToZ(String *,String *); System::Void sortFP(ArrayList *List,System::Boolean (*pFkt)(String *,String *));
also ich würde mich freuen wenn mir da jemand einen tipp geben könnte ... steig da nicht so richtig durch.
MfG Kasimir :xmas1:
-
hast du zwar nicht gefragt...
FileListItem *castedItems[]=new FileListItem*[List->get_Count()];
der zweite stern sieht mir verdaechtig falsch aus
-
hm meiner meinung nach ist das richtig so und der compiler stößt sich auch nicht drann weil das ist ja nen array und die werden so erstellt .... oder hab ich da nochwas falsch verstanden ... ?
hab das hier her: http://www.microsoft.com/germany/msdn/library/net/cplusplus/CPlusPlusManagedExtensions.mspx
-
FileListItem **castedItems = new FileListItem*[List->get_Count()];
so siehts glaub ich richtig aus, wenn du ein FileListItem** willst.ich muss dazu sagen, dass ich das nur aus C++ kenne und von MS Java aus prinzip keine ahnung habe.