博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何声明类成员函数指针?
阅读量:4154 次
发布时间:2019-05-25

本文共 587 字,大约阅读时间需要 1 分钟。

比如: 有如下的一个类, 里面有一个成员函数 Func()

class Test

{

     public:

      int Func(void* param1, void* param2);

};

 

如果我想定义这个成员函数的指针,改如何声明呢?  我们知道类的成员函数都隐含了一个this 变量作为参数,亦即“this”指针。

如果类成员函数原型是这样的  : int Func(void* param1, void* param2);

经过编译器解析后的代码就变成了:  int Func(Test *this, void* param1, void* param2);   形参比原来的多了一个。

 

所以我们不能这样声明类的成员函数:  typedef int (*FuncPointer)(void* param1, void* param2);

 

正确的写法是:

typedef int (Test::*FuncPointer)(void* param1, void* param2);   

 

例子:

 
typedef int (Test::*FuncPointer)(void* param1, void* param2);  
FuncPointer f = &Test::Func;
Test t;
void* param1;
void* param2;
(t.*f)(param2, param2);

 

 

 

转载地址:http://fmrti.baihongyu.com/

你可能感兴趣的文章
九度:题目1012:畅通工程
查看>>
九度:题目1017:还是畅通工程
查看>>
九度:题目1034:寻找大富翁
查看>>
第六章 背包问题——01背包
查看>>
51nod 分类
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>
性能扩展问题要趁早
查看>>
MySQL-数据库、数据表结构操作(SQL)
查看>>
OpenLDAP for Windows 安装手册(2.4.26版)
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
JSP的内置对象及方法
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>