200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 怎么将一个类的成员函数作为指针传递给另一个类的成员函数

怎么将一个类的成员函数作为指针传递给另一个类的成员函数

时间:2023-01-22 04:08:03

相关推荐

怎么将一个类的成员函数作为指针传递给另一个类的成员函数

今天帮同学解决了一个问题,怎么把一个类的成员函数作为指针传递给另一个类的成员函数。

以前只接触过C语言中的函数指针:

#include <iostream.h>

void add(int a,int b)

{

cout<<"the value of add is "<<a+b<<endl;

}

void mul(int a,int b)

{

cout<<"the value of multiple is "<<a*b<<endl;

}

/*void (*fun)(int,int)是要传入的函数指针的原型声明*/

void get(int a,int b,void (*fun)(int,int))

{

fun(a,b);

(*fun)(a,b);

}

void main()

{

get(10,10,add);

get(10,10,mul);

}

换成类的代码如下:

#include <iostream.h>

class A{

public:

void fun1(double a,double b)

{

cout<<a+b<<endl;

}

};

class B{

public:

template <typename T>

/*

void(T::*fun)(double,double):T类的成员函数fun指针函数声明

类的成员函数和普通的全局函数有区别,所以在使用的时候要加以区别

如果是 void(*fun)(double,double):形式则只能传递普通全局函数的指针,而不能传递类成员函数的指针。

传递类的成员函数的指针必须同时传递能够调用该成员函数的对象,因为除了类的静态成员函数,只有类的对象才能调用其成员函数。

*/

void fun2(double a,double b,T a1,void(T::*fun)(double,double))

{

(a1.*fun)(a,b);

}

};

class C{

public:

void fun3(double a,double b)

{

cout<<a*b<<endl;

}

};

void main()

{

A a;

B b;

C c;

/*

&A::fun1传递一个类的成员函数指针的方式。

*/

b.fun2(10,19,a,&A::fun1);

b.fun2(10,19,c,&C::fun3 );

}

--未完待续

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。