关于函数指针用于类成员函数

关于函数指针一般使用就不多说了,直接给个通用类型:typedef 返回类型(*新类型)(参数表)。
而在类中使用 通用类型是 typedef 返回类型(类名::*新类型)(参数表)。
以下是个人使用的例子,结构体内放 类指针、函数(即任务),主要是因为刚刚开始使用线程池,
通过postthreadmessage向线程发送任务,lparam里面放结构体指针。
使用线程池不是很熟悉,练一下手;
结果碰到函数指针问题,就找了一些资料,发现很多网上例子编译有问题。
就将个人使用的例子写了一个,希望有人用到。
    请注意看注释部分。
class test{
public:
 void fun(int param){int tmp =param;}
};

typedef void (test::*fp)(int);
typedef struct _CMDData{
 test *pClass;
 fp Proc;
}CMDData;

int main()
{
 test Object; 

  fp newfp = test::fun;
  (Object.*newfp)(123);  // 第一对括号位置使用时请注意,
 // 使用 Object.(*newfp)(123);将会编译出错,这个也是网上例子出现的出错。
 CMDData docmd;
 docmd.pClass =&Object;
 docmd.Proc = &test::fun;

 (docmd.pClass->*docmd.Proc)(123); // 第一对括号位置使用时请注意
 return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值