vc++软件框架设计之函数指针

本文详细解释了回调的概念,如何使用指向函数的指针实现回调,并通过实例展示了在不同场景下如何灵活运用这一技术。通过具体代码演示,深入浅出地介绍了回调在软件开发中的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一定义

指向函数的指针。

二作用

实现回调。调用者通过被调用者的函数地址来调用被调用者的函数,调用者除了关注被调用者的函数地址外不需要关注被调用者的任何信息。

三应用场景代码

 #include <stdio.h>

 

class CHardWare

{

public:

         CHardWare();

         ~CHardWare();

         void (*NotifyUiLayer)(char* pMsg);

         void ReadUsbData();

};

 

CHardWare::CHardWare()

{

 

}

 

CHardWare::~CHardWare()

{

 

}

 

void CHardWare::ReadUsbData()

{

         int nTimes = 10;

         for ( int i = 0; i < nTimes; i++ )

         {

                   char szTemp[100];

                   sprintf(szTemp, "%s %d", "从usb设备读到数据",i);

                   NotifyUiLayer(szTemp);

         }

}

 

class CUi

{

public:

         CUi();

         ~CUi();

         static void UiRecvMsg(char* pMsg);

};

 

CUi::CUi()

{

 

}

 

CUi::~CUi()

{

 

}

 

void CUi::UiRecvMsg(char* pMsg)

{

         char szTemp[100];

         sprintf(szTemp, "%s%s\n", "UI层收到底层消息:",pMsg);

         printf(szTemp);

}

 

void main()

{

         CHardWare mCHardWare;

         mCHardWare.NotifyUiLayer = CUi::UiRecvMsg;

         mCHardWare.ReadUsbData();

         getchar();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值