在一個類中,調用另一個類的成員函數,代碼如下:
//定義事件函數指針
typedef void __fastcall(__closure * TMyEvent)(AnsiString s);
TMyEvent FOnTextOut;
//---------------------------------------------------------------------------
class a
{
public :
void __fastcall test(AnsiString s)
{
ShowMessage(s);
}
};
class b
{
public :
void __fastcall show(a &p,AnsiString s)
{
FOnTextOut = p.test;
FOnTextOut(s);
}
};
.cpp中調用如下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
a a1;
b b1;
b1.show(a1,"hello world"); //調用類a1中的成員方法test
}
如果不加__closure編譯通不過,顯示錯誤:
[C++ Error] Unit1.h(28): E2235 Member function must be called or its address taken