zoukankan      html  css  js  c++  java
  • 在C++中使用tr1实现functor/函数指针/成员函数指针

    1.需要头文件#include <functional>

    2.定义functor变量 :

    std::tr1::function< T* (P1*, P2*) > DpdCreateT;

    BCB可以先typedef一下函数声明

    typedef T* (Delegate)(P1*, P2*);

    std::tr1::function< Delegate > DpdCreateT;

    3.连接:

    类函数

    xx.DpdCreateT = std::tr1::bind(

      & ZZZ::CreateConnection,  //类函数地址

      & instance, // 对象实例地址 

      std::tr1::placeholders::_1, // 参数1占位符 

      std::tr1::placeholders::_2 // 参数1占位符

    );

    全局函数,直接赋值即可

    xx.DpdCreateT = GlobalCreateFunction;

     //------------------------------------------------------------------------------

    简单函数指针

    typedef void (*FooPtr)(int, double);

    void Foo(int anInt, double aDouble)
    {
     std::cout<<"Foo() = "<<anInt<<", "<<aDouble<<endl;  
    }

    FooPtr func = &Foo;
    (*func)( 1, 2.0 );

     //------------------------------------------------------------------------------

    成员函数指针

    typedef int (SomeClass::*MemberFooPtr)(int, double);


    MemberFooPtr p;

    SomeClass sc;

    p = &SomeClass::Foo;
    (sc.*p)(1, 2); 

    //-------------------------------------------------------------------------------

    VS 2008中

    #include <functional>

    定义:

    typedef void (SetFrameValueActionDelegate)(T*, V frameValue);
    std::tr1::function<SetFrameValueActionDelegate> SetFrameValueAction;

    绑定:

    mWeekViewGroupLocationAnimation.SetFrameValueAction
     = std::tr1::bind( &MyClass::mWeekViewGroup_LocationAnimation_SetFrameValue,
          &mRenderGroupWeekView,
          std::tr1::placeholders::_2);


     

  • 相关阅读:
    第二阶段站立会议第三天
    第二阶段站立会议第二天
    第二阶段站立会议第一天
    测试计划
    cnblogs用户体验及建议
    第一阶段绩效评估
    第一阶段各组意见回复
    第一阶段团队评价
    站立会议第十天
    站立会议第九天
  • 原文地址:https://www.cnblogs.com/mrfangzheng/p/1766707.html
Copyright © 2011-2022 走看看