在一个类中,调用另一个类的成员函数,代码如下:
//定义事件函数指针
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