天天看点

__closure调用另一个类中的函数

在一个类中,调用另一个类的成员函数,代码如下:

//定义事件函数指针
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