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

以前只接触过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 );
}

--未完待续

转载于:https://www.cnblogs.com/chenchenluo/archive/2011/12/24/2300642.html

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

  1. python传递类的实例_使用Python将变量从一个类实例传递到另一个类实例?

    我在将一个类实例中定义的变量传递到另一个类实例时遇到问题.我对使用类比较陌生,但据我所知,变量可以通过简单地定义为类实例的一部分(例如在下面的示例中)从一个实例传递到另一个实例.虽然我以前使用过这个模 ...

  2. c语言函数用指针传递参数问题

    c语言函数用指针传递参数问题 问题1:你是把变量传给了函数,还是把地址传给了函数? 例: #include <stdio.h> #include <stdlib.h> #inc ...

  3. 类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。

    package com.leiclass.cle; import java.util.Scanner; public class Test1 { /** * 类的成员变量:   猜数字游戏:一个类A有 ...

  4. Python编程语言学习:python语言中快速查询python自带模块函数的用法及其属性方法、如何查询某个函数关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略

    Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法.如何查询某个函数&关键词的用法.输出一个类或者实例化对象的所有属性和方法名之详细攻略 ...

  5. python中的类怎么定义怎么用_python中怎么定义一个类

    什么是类? 类用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 什么是方法? 类中的函数即为方法 如何定义一个类? 定义类,语法格式如下:clas ...

  6. 一个类可以实现多个接口但是只能实现一个类

    public class SpbmServiceImpl extends BasicServiceImpl implements ISpbmService,ISpbmDao {} 一个类可以实现多个接 ...

  7. C++57个入门知识点_40 常成员函数(用于定义不可修改类内部成员变量的函数,一般用来修饰Get函数;常成员函数this指针:const T* const;常成员函数内部变量修改方法:强转/关键字)

    前面我们已经学习了C++中重要的知识点,特别是虚函数可能会有些懵逼,但是需要我们在实践中不断的理解和尝试,写代码是进步最快的方式,接下来将会介绍一些简单但很重要的知识点,本篇介绍常成员函数. 总结: ...

  8. swift函数参数指针传递inout和@escaping冲突的解决方法

    这里写目录标题 需求 解决方法 容易产生的问题 总结 今天深入解决关于函数参数指针的问题.问题是这样,我在swift的一个函数里面,参数里需要传递一个指针类型的Int,但是这个函数里面还有一个逃逸闭包 ...

  9. 将控件关联的变量值传递到另外一个类中的方法

    今天在修改V1.1的一个bug:当向一个场景中加入已存的模型时会提示模型已存在,要求更改模型名称. 具体步骤如下: 1.新建一个对话框,ID为:IDD_RENAME,在此对话框中添加一个Edit控件, ...

最新文章

  1. 为什么我共享的文件别人看不到_【零基础学云计算】解析文件共享及访问方式...
  2. 分布式系统关注点(9)——想通关「限流」?只要这一篇
  3. UVA 11237 - Halloween treats(鸽笼原理)
  4. 海康IP_Tool修改工具使用教程
  5. 双厨狂喜!海盗船机械键盘联名石之海,一起欧拉欧拉!
  6. Wannacry蠕虫勒索软件“永恒之蓝”3种修复方案
  7. u盘pe启动盘怎么制作?
  8. 使用metamask发起交易的时候,交易卡在pending了怎么办?
  9. 基于Arduino Uno开发板的红外遥控开发
  10. win10禁止计算机进入休眠,Win10怎么关闭系统休眠 Win10关闭系统休眠方法
  11. Python爬虫网易云歌词及词频统计--(周杰伦top50)
  12. c语言——简单计算器
  13. 操作系统指纹探测实验
  14. kafka高性能的原因
  15. 低压差稳压器--AMS1117芯片简介
  16. python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂
  17. 如何使用CUDA 显卡编程
  18. 哪位能推荐一下广州比较好的IT公司啊,不尽感激
  19. 肖特基二极管和快恢复二极管区别
  20. elasticsearch使用问题记录(一) 底层修改同义词典synonyms.txt未生效

热门文章

  1. Js让光标停在输入框input框最后面
  2. 对象列表Python概述:C++程序员眼中的Python
  3. Git学习系列(一)初识Git
  4. JSTL和EL的使用
  5. 另类windows与ubuntu共享实现
  6. SQL-24 获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date='9999-01-01'...
  7. python之UnittTest模块
  8. 深入学习Make命令和Makefile(上)
  9. read -p 的使用
  10. nginx+apache实现负载均衡+动静分离配置(编译安装)