如何传递类成员函数的指针

 

需求:

在类A里面,有一组规格相同的函数;

类B中有一个成员F为A中成员函数的指针,在构造B对象时对该成员F进行初始化,然后在Do函数中调用此函数指针所对应的函数。

为实现这个目的,需要怎么做呢。

 

Class A

Void F1();

Void F2();

Void F3();

 

Class B

B( f )

Do ()

{

    F();

}

F

A* pA;

 

这里需要用到C++的一个特性:成员函数指针。这个特性一般很少用到,所以感觉比较晦涩,使用要点如下:

1.      使用typedef来定义A成员函数指针的类型:

typedef  void (A::* FunC)();

这里将FunC定义为A类中返回值类型为空,参数列表为空的函数指针。

2.      在B中声明

FunC F; //将F声明为一个A中成员函数的指针。

3.      声明B的构造函数

B (A* a, Func f) { pA = a; F = f;}

4.      Do中调用如下:

(pA->*F)();

5.      外部构造A、B对象,并进行方法调用。

A a;

B b1(&a, &A::F1);

B1.Do();  //这其中就会把F1调用起来。

B b2(&a, &A::F2);

B2.Do();  //这其中就会把F2调用起来。

 

特别说明:

C++的成员函数都隐含了一个this参数,也就是说要调用类对象的成员函数,首先必须要有该类的对象,正因此,才在B的构造函数中把A对象地址传了进去。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值