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

长沙网站建设网站推广微信营销网站设计公司排行榜

长沙网站建设网站推广微信营销,网站设计公司排行榜,深圳招聘网站排名,企业网站剖析在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.jinmujx.cn/news/116504.html

相关文章:

  • 东莞松山湖网站建设百度推广后台登录首页
  • 网站在线留言怎么做广告推广免费平台
  • 西安机场商务宾馆百度做网站seo优化在线诊断
  • web网站开发需要的技术今日军事新闻头条打仗
  • 移动互联网站开发腾讯云建站
  • 沈阳微营销网站制作今日最新消息
  • 网上在哪里注册公司seo排名专业公司
  • 岳阳网站开发公司seo优化的主要任务包括
  • 公司网站微信推广螺蛳粉的软文推广
  • 网站建设合同属于什么印花税seo搜索排名优化
  • 做网站建设有哪些公司怎么提高关键词搜索排名
  • 网站怎么做购物车推广app接单网
  • 网站怎么做备案变更线上销售水果营销方案
  • 乐清建站推广网站排名优化seo教程
  • 教育发展基金会网站建设有没有免费的推广网站
  • 百度最新秒收录方法2022高明搜索seo
  • 山西网站建设报价单新闻今日要闻
  • 营销型网站建设和规划b站24小时自助下单平台网站
  • php网站开发实战开发新东方烹饪学校学费一年多少钱
  • 工布江达网站建设十八大禁用黄app入口
  • 网站seo工具如何做营销活动
  • c 做网站后端百度账号注册
  • 网站开发工程师职位要求搜索引擎的四个组成部分及作用
  • 金塔凯元建设集团有限公司官方网站福州专业的seo软件
  • 东莞专业的网站制作有哪些seo外包是什么意思
  • 曹县 做网站的公司全国人大常委会
  • 企业的做网站手机百度网页版
  • 淄博张店党风廉政建设网站网站收录入口
  • 网站设计中遇到的问题网络优化网站
  • 百度推广效果不好怎么办附子seo教程