码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • c++成员函数做回调


    对于bind包装成员函数的用法,简单做个笔记。

    绑定全部参数,成员函数作为线程执行函数:

    对成员函数取址时要加类名空间,再bind绑定好this指针。

    #include 
    #include 
    class MyClass {
    public:
    int starthread(){
    m_thread_ptr = std::make_shared<std::thread>(&MyClass::thread_loop_f, this);
    m_thread_ptr->detach();
    //do something
    return 0;
    }
    
    private:
    std::shared_ptr<std::thread> m_thread_ptr;
    void thread_loop_f()
        {
    		while(1) {
    		//do something
    		}
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    绑定一部分参数,成员函数作为回调函数

    如果只绑定一部分参数,也可以用bind来实现。
    这里使用std::placeholders::_1作为占位符,指定this指针和第一个参数绑定。后续调用再传第二个参数即可。

    using result_cb = std::function<void (int num)>;
    
    int use_cb(result_cb &cb) {
    	int result = 1;
    	cb(result);
    	return 0;
    }
    
    class MyClass{
    public:
    void process_result(int num) {
    	printf("num:%d\n", num);
    }
    
    int start()
    {
    	//这里将第一个参数和this指针绑定,其他地方就能直接调用成员函数了
    	result_cb cb = std::bind(&MyClass::process_result, this, std::placeholders::_1);
    	use_cb(cb);
    	return 0;
    }
    
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    手写代码,意思就是这么个意思。

  • 相关阅读:
    java-方法
    [附源码]java毕业设计停车场收费管理系统
    react hook:useMemo
    学习平台助力职场发展与提升
    系统结构设计原则、聚合与耦合
    05【Redis的发布订阅】
    Mysql(数据库)知识详解【6】~{锁,架构}
    Linux之C编程错误处理、多文件工程、man的使用技巧
    java读取OPC DA数据---Utgard
    华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测包管理工具安装软件(六)
  • 原文地址:https://blog.csdn.net/yuanlulu/article/details/127420577
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号