• c++_成员函数回调


    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    
    
    class CAppleDemo
    {
    public:
        CAppleDemo();
        ~CAppleDemo();
     
        void fun1(void);
     
        void fun2(int a, int b);
     
        int fun3(int a);
    };
    
    
    #include <iostream>
     
    CAppleDemo::CAppleDemo()
    {
          //    std::cout << "CAppleDemo::CAppleDemo()" << std::endl;
    }
     
     
    CAppleDemo::~CAppleDemo()
    {
           //    std::cout << "CAppleDemo::~CAppleDemo()" << std::endl;
    }
     
    void CAppleDemo::fun1(void)
    {
        ShowMessage( "CAppleDemo::fun1()" );
    }
     
    void CAppleDemo::fun2(int a, int b)
    {
            ShowMessage( "CAppleDemo::fun2() a="+(String)a+",b="+(String)b );
    }
    
    int CAppleDemo::fun3(int a)
    {
            ShowMessage( "CAppleDemo::fun2() a="+(String)a);
    
        return a;
    
    }
    
    template<typename dst_type, typename src_type>
    dst_type pointer_cast(src_type src)
    {
        return *static_cast<dst_type*>(static_cast<void*>(&src));
    }
     
    template<typename dst_type, typename src_type>
    dst_type union_cast(src_type src)
    {
        union{
            src_type s;
            dst_type d;
        }u;
        u.s = src;
        return u.d;
    }
    
    typedef void (__fastcall *FunFun1)(void* pThis, int edx);
    typedef void (__fastcall *FunFun2)(void* pThis, int edx, int a, int b);
    typedef int  (__fastcall *FunFun3)(void* pThis, int edx, int a);
    
    typedef void (__fastcall *FunFunMain)(void* pThis, TObject *Sender);
    
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      //  CAppleDemo cAppleDemo;
    
    
        //    FunFun1 fun1 = pointer_cast<FunFun1>(&CAppleDemo::fun1);
        //    FunFun2 fun2 = pointer_cast<FunFun2>(&CAppleDemo::fun2);
        //    FunFun3 fun3 = union_cast<FunFun3>(&CAppleDemo::fun3);
    
       //    fun1(NULL, NULL);
       //    fun2(NULL, NULL, 11, 22);
       //    fun3(NULL, NULL, 33);
    
            FunFunMain pM =  union_cast<FunFunMain>(&TForm1::Button1Click);
            pM(NULL,Sender);
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
              ShowMessage("Button1Click");
    }
    //---------------------------------------------------------------------------
  • 相关阅读:
    mysql中的内连接,外连接
    MySQL左连接、右连接
    attempted to assign id from null onetoone
    Hibernate session方法
    java.sql.SQLException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error
    hibernate多对一、一对一、一对多、多对多的配置方法
    齐头并进
    w5100的板子做回来了,再次犯错误。
    一个阶段的任务基本完成了
    任务繁重
  • 原文地址:https://www.cnblogs.com/leochan007/p/13851887.html
Copyright © 2020-2023  润新知