C++ 中动态函数指针的demo

2550阅读 0评论2021-02-02 iibull
分类:其他平台

解决的问题:
  经常我们做业务共用代码 HPP 时, 希望CPPx1包含的时候有自己的实现函数, CPPx2是另外一个.
那么怎么在HPP动态调用不同的实现呢? 一下是做了个例子.  其实还可以使用 模板类检测类内是否有某个函数或者成员变量.  https://blog.csdn.net/sinat_18811413/article/details/104606673

点击(此处)折叠或打开

  1. #include <thread>
  2. #include <functional>
  3. #include <iostream>
  4. #include <ostream>
  5. #include <unistd.h>
  6. using namespace std;

  7. /*
  8.     g++ cpp_func_ptr.cpp -lpthread
  9. */

  10. class CTest;
  11. typedef void (CTest::*CUST_CB)();
  12. class CTest
  13. {
  14. public:
  15.     std::thread m_thread ;

  16.     CTest()
  17.     {
  18.         //cb = &CTest::custom_cb;
  19.         m_thread = std::thread(std::bind(&CTest::execute, this));
  20.     }

  21.     void custom_cb()
  22.     {
  23.         cout << "callback OK" << endl;
  24.     }

  25.     void regist_cb(CUST_CB pfunc_cb)
  26.     {
  27.         cb = pfunc_cb;
  28.     }

  29.     void execute(void)
  30.     {
  31.         while (1) {
  32.             if (cb) {
  33.                 (this->*cb)();
  34.             }
  35.             sleep(1);
  36.         }
  37.     }
  38.     
  39.     CUST_CB cb{nullptr};
  40. };

  41. int main()
  42. {
  43.     CTest test;
  44.     test.regist_cb(&CTest::custom_cb);
  45.     test.execute();
  46. }

上一篇:ROS2 NAV2
下一篇:重装win10, 没有安装任何音频输出设备.