1.类成员函数指针调用
注意:如果在类内调用,则函数指针声明要放在类里面.如果是类外调用,则函数指针声明放在调用类中.
CFunCall.h文件:
class CFunCall
{
typedef int (CFunCall::*CLASSFUNC)(int);
public:
explicit CFunCall();
~CFunCall();
void ClassPrint(int );
private:
CLASSFUNC mCfun;
};
CFunCall.cpp
CFunCall::CFunCall()
{
mCfun=&CFunCall::ClassPrint;
(this->*mCfun)(1);//类内直接调用,需要指定当前类的实例this.
}
类外调用
main.cpp
typedef int (CFunCall::*CLASSFUNC)(int);
int main(int argc, char *argv[])
{
CFunCall mCFunCall;//实例化类
CLASSFUNC mCfun;
mCfun=&CFunCall::ClassPrint; //附值类的成员函数给定义的函数指针
(mCFunCall.*mCfun)(1); //调用,注意调用的形式,要有类的实例
2.普通函数指针调用
这个比类函数指针更容易理解.直接上代码说明
.h文件
typedef int (*FunC)(int); //声明函数指针,带一个int参数,和返回一个整形数
int Print(int);
class FunCall
{
public:
FunCall();
~FunCall();
private:
FunC mFun; //定义函数指针
};
在.cpp中实现一个打印函数
int Print(intdata)
{
qDebug()<<"data"<<data;
return 0;
}
/调用//
mFun=&Print; //将Print的函数地址给定义的函数指针.
(*mFun)(1); //调用
/效果//