首页 > 其他 > 详细

模板函数指针

时间:2021-01-26 15:22:43      阅读:31      评论:0      收藏:0      [点我收藏+]

 

比较讨厌模板,所以都不希望整个类都感染,只让部分函数有模板功能。

这里主要是通过第44行将一个模板函数指针转化给一个通用的类指针保存,然后在线程里面通过类对象将该对象绑定的CB在线程里面使用。

 

 1 class mwProData {    
 2      public:
 3         template <typename T>
 4         int32_t CreateData(    
 5                 ...
 6                 void (*callback)(const T &dat));
 7         
 8         void* GetCallBack(void) {
 9             return m_pCallBack;
10         }
11 
12        template <typename T>
13        void WaitSet(void (*callback)(const T &dat));
14 
15     private:
16        ...
17        void *m_pCallBack;
18 };
19 
20 template <typename T>
21 void *__MW_DATAREAD_RunData(void *arg)
22 {
23     pthread_detach(pthread_self());
24     mwProData *pReader = (mwProData *)arg;
25 
26     void *pCb = pReader->GetCallBack();
27     if (pCb == NULL) {
28         printf("mwProData::GetCallBack() return NULL\n");
29         return NULL;
30     }
31 
32     pReader->WaitSet<T>((void (*)(const T&))pCb);
33 
34     return NULL;
35 }
36 
37 template <typename T>
38 int32_t mwProData::CreateData(
39         ...  
40         void (*callback)(const T &dat))
41 {
42     pthread_t tid;
43     ...      
44     this->m_pCallBack = (void *)callback;
45     pthread_create(&tid, NULL, __MW_DATAREAD_RunData<T>, (void *)this);
46     ...
47 }

 

模板函数指针

原文:https://www.cnblogs.com/sciapex/p/14329646.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!