当前位置: 首页 > news >正文

郑州网站建设商城定制2024年新冠疫情最新消息

郑州网站建设商城定制,2024年新冠疫情最新消息,厦门做网站价格,手机自建网站平台在C语言中,传递函数指针是非常常见的操作。 在C语言中,使用C语言一致的方法传递全局函数指针,或者传递静态函数指针也很常见。 不过如果遇到想传递非静态成员函数时,可以参考以下示例代码。 #ifndef _WORKER_HPP_ #define _WOR…

在C语言中,传递函数指针是非常常见的操作。

在C++语言中,使用C语言一致的方法传递全局函数指针,或者传递静态函数指针也很常见。

不过如果遇到想传递非静态成员函数时,可以参考以下示例代码。

#ifndef _WORKER_HPP_
#define _WORKER_HPP_#include <iostream>
#include <unistd.h>
#include <functional>
#include <chrono>
#include <iomanip>
#include <sstream>class Worker {
public:// 设置回调函数void registerCallback(std::function<void(int, std::string, long)> cb) {this->mCallback = cb;}void startWork() {using namespace std::literals;const std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now();const std::time_t t_c = std::chrono::system_clock::to_time_t(now);int i = 1008;std::stringstream ss;ss << std::put_time(std::localtime(&t_c), "%F %T");std::string s = ss.str();long l = __cplusplus;mCallback(i, s, l);}private:std::function<void(int, std::string, long)> mCallback;};#endif

参考Manager内的work函数,列出了几种写法。

#ifndef _MANAGER_HPP_
#define _MANAGER_HPP_#include <functional>
#include <string>
#include <iostream>#include "worker.hpp"class Manager {
public:Manager(): mI(-1), mS("coco"), mL(-1L) {}virtual ~Manager() = default;public:void work() {using namespace std::placeholders;// 设置回调函数, 使用lambdaworker.registerCallback([this](int&& i, std::string&& s, long&& l) -> void {this->onMsgCallback(i, s, l);});// 设置回调函数,使用bind,搭配mem_fnauto ptr = std::mem_fn(&Manager::onMsgCallback);worker.registerCallback(std::bind(ptr, this, _1, _2, _3));// 不搭配mem_fnworker.registerCallback(std::bind(&Manager::onMsgCallback, this, _1, _2, _3));worker.startWork();}void print() {std::cout << __FUNCTION__ << " mI is " << mI << ", mS is " << mS << ", mL is " << mL << std::endl;}private:void onMsgCallback(int i, std::string s, long l) {std::cout << __FUNCTION__ << " i is " << i << ", s is " << s << ", l is " << l << std::endl;this->mI = i;this->mS = s;this->mL = l;}private:int mI;std::string mS;long mL;Worker worker;
};#endif

main示例:

int main()
{// 演示将非静态成员函数设置为回调函数{Manager manager;manager.print();manager.work();manager.print();}return 0;
}

 输出参考:

print mI is -1, mS is coco, mL is -1
onMsgCallback i is 1009, s is 2023-11-18 20:22:34, l is 201402
print mI is 1009, mS is 2023-11-18 20:22:34, mL is 201402

http://www.shuangfujiaoyu.com/news/46696.html

相关文章:

  • 如何注册电商网店中山seo
  • 宝塔怎么做两个网站seo搜索优化排名
  • 汕头选择免费网站优化网站开发培训
  • 建设信用卡在网站挂失块吗百度推广时间段在哪里设置
  • 企业网站备案信息查询下载百度 安装
  • 网站做的比较好的贸易公司手机优化大师哪个好
  • 浦东今天疫情详细名单搜索seo优化托管
  • 网站的要素是什么意思广州疫情已经达峰
  • 简单的英文网站源码国内搜索引擎排名第一的是
  • wordpress 纯代码seoseo机构
  • 爱写作网站360站长平台
  • 广州网站建设求职简历丈哥seo博客
  • 网站建设预算表泽成seo网站排名
  • 用ps怎么做网站的效果图怎么优化推广自己的网站
  • 手机怎样建个人网站搜易网托管模式的特点
  • 网站后台怎么做外部链接微信广告投放收费标准
  • 上海设计招聘网站深圳网络推广怎么做
  • 虚拟专用网络服务器网站推广优化
  • 如何建设企业网站智能识别图片
  • 北京学校网站建设友情链接是啥意思
  • 长春互联网市场seo是什么意思
  • 表格如何给网站做链接地址郑州百度关键词seo
  • 网站建设 业务员提成杭州互联网公司排名榜
  • 电子商务网站建设系统功能seo快速优化方法
  • 南宁seo网站建设费用上海百度搜索优化
  • 衡水做网站多少钱云南疫情最新数据消息中高风险地区
  • 关于加强网站建设和管理的通知做百度推广
  • 建公司网站的公司网站推广和优化的原因
  • 网站建设公司 - 百度sem搜索引擎营销
  • 东营网站关键词优化网络营销策略案例