08. september 2005 - 15:23
Der er
4 kommentarer og 1 løsning
Endnu en pointer til finktion spørgsmål
Det minder meget om rigtigt mange andre inlæg, men jeg har ikke fundet et svar jeg kan bruge endnu. Ganske enkelt skal jeg bruge en pointer til en funktion som ligger i samme klasse som jeg vil kalde den fra. Det lyder let hva ? Her er lidt kode fra min header: class TForm1 : public TForm { int(TForm1::*fcptr)(int a); int fc(int a); }; og fra sovsen: int TForm1::fc(int a) { return a+4; } void __fastcall TForm1::Button1Click(TObject *Sender) { f = &fc; int a = f(1); } Hvad er der galt her ?
Annonceindlæg fra Arctic Wolf
08. september 2005 - 15:39
#1
Vola... Fra headeren: class TForm1 : public TForm { int(TForm1::*f)(int a); int fc(int a); }; og cpp filen: int TForm1::fc(int a) { return a+4; } void __fastcall TForm1::Button1Click(TObject *Sender) { f = &TForm1::fc; Form1->Caption = fc(1); }
08. september 2005 - 15:42
#2
DOOOOOHHHHHH!!!!!!!!!! Jeg blev bare så glad for at den kunne kombilere at jeg ikke lige så ordentligt efter. Jeg genåbner lige igen.... (jeg kalder funktionen direkte uden om pointeen i det løsnings forslag).
08. september 2005 - 19:53
#5
Måske noget i stil med: #include <iostream> class MyClass { public: MyClass() { FPtr = &MyClass::MyFunc1; } void MyFunc1() { std::cout << "Func1" << std::endl; } void MyFunc2() { std::cout << "Func2" << std::endl; } typedef void (MyClass:: *FPtrType )(); FPtrType FPtr; void Do() { (this->*FPtr)(); FPtr = &MyClass::MyFunc2; } }; int main() { MyClass My; My.Do(); My.Do(); }