Funktionspointer Fehlermeldung
-
Hallo,
o.k. dann mach ich's wohl lieber mit static.
Danke.
-
Bashar schrieb:
this->*getZ( ...
Hier fehlen allerdings noch Klammern:
(this->*getZ)( ...
-
Guten Morgen,
hab noch Probleme mit meinem Funktionspointer
void test::test1() { float(test::*getZ)(Point *a_cPoint,const int &a_iNum); int Z = 3; // geb ich einfach mal so vor if(Z ==3){ getZ = ZMedian; // Fehlermeldung: 'float (__cdecl *)(class Point *,const int &)' kann nicht in 'float (__thiscall test::*)(class Point *,const int &)' konvertiert werden // Es gibt keinen Kontext, in dem diese Konvertierung moeglich ist. }else getZ = ZMean; // hier die gleiche Fehlermeldung Point* t_test; // bestimme ich einfach mal so int Num = 4; float ZWert = (this->*getZ)(t_test,Num); // Mein Programm soll jetzt so schlau sein, dass ich mit (this->*getZ) die richtige Methode anwende und ein float-Wert zurückgegeben wird. }
Was mach ich denn falsch?
-
ga_un schrieb:
Was mach ich denn falsch?
Bashar schrieb:
Du versuchst jetzt, die Adresse einer Memberfunktion an einen normalen Funktionspointer zuzuweisen, was wie man sich denken kann, nicht funktionieren kann.
-
Hallo,
bitte einen Tipp, wie ich das schreiben kann???
getZ = this->ZMean; //? getZ[0] = this->ZMean; //? //....
-
Hallo,
hab's jetzt gecheckt, es funktioniert so (muss kein static Member deklarieren):
class test { public: void test1(); private: float ZMedian(Point *a_cPoint,const LTInt &a_iNum); float ZMean(Point *a_cPoint,const LTInt &a_iNum); };
void test::test1() { float(test::*getZ)(Point *a_cPoint,const int &a_iNum); int Z = 3; if(Z ==3) getZ = ZMedian; else getZ = ZMean; Point* t_test; int Num = 4; float ZWert = (this->*getZ)(t_test,Num); }
-
Probier mal
getZ = &ZMean;
oder
getZ = &test::ZMean;
BTW was ist aus der static-Idee geworden? Ich hoffe mal du willst nur Memberpointer ausprobieren und die hier nicht tatsächlich benutzen ...
-
Ich wollte Memberpointer ausprobieren.
Ausserdem hab ich ne Schleife, die bis zu 2Mio.x durchgeführt wird. In der hatte ich drei Abfragen: soll Min/Max/ od. Median berechnet werden. Damit in der Schleife die drei if-Abfragen entfallen, wollte ich Memberpointer einsetzen ...
-
Nee, ursprünglich wolltest du mit Funktionspointern arbeiten. Wenn ich dich mal auf dein erstes Posting hinweisen darf ...
-
In deinem Code wird immer nur der Median berechnet.
mfg
v R
-
Unabhaengig zum speziellem Thema: Hier gibt es ein wirklich nettes Tutorial fuer Funktionszeiger: (sinnigerweise) www.function-pointer.org.