質問するログイン新規登録

回答編集履歴

2

修正

2021/10/23 06:26

投稿

Serbonis
Serbonis

スコア586

answer CHANGED
@@ -26,4 +26,30 @@
26
26
 
27
27
  my_vendorlib_listener->set_callback( this->callback );
28
28
  }
29
+ ```
30
+ 修正
31
+ ```C++
32
+ // MyVendorLibApi.hpp
33
+ class MyVendorLibApi
34
+ {
35
+ private:
36
+ class MyVendorLibListener* my_vendorlib_listener;
37
+
38
+ public:
39
+ template<class T>
40
+ void set_callback(void(T::*fp)(int a), T *obj)
41
+ {
42
+ set_callback( boost::bind(fp, obj, boost::placeholders::_1) );
43
+ }
44
+
45
+ void set_callback( std::function<void(int)> callback );
46
+ };
47
+
48
+ //MyVendorLibApi.cpp
49
+ #include "my_vendorlib_listener.hpp"
50
+
51
+ void MyVendorLibApi::set_callback( std::function<void(int)> callback ){
52
+
53
+ my_vendorlib_listener->set_callback( callback );
54
+ }
29
55
  ```

1

誤字修正

2021/10/23 06:26

投稿

Serbonis
Serbonis

スコア586

answer CHANGED
@@ -13,7 +13,9 @@
13
13
  void set_callback(void(T::*fp)(int a), T *obj)
14
14
  {
15
15
  this->callback = boost::bind(fp, obj, boost::placeholders::_1);
16
+     push_callback();
16
17
  }
18
+ private:
17
19
  void push_callback( void );
18
20
  };
19
21
 
@@ -24,17 +26,4 @@
24
26
 
25
27
  my_vendorlib_listener->set_callback( this->callback );
26
28
  }
27
-
28
- // 実行
29
- {
30
- MyVendorLibApi api;
31
- struct TEST {
32
- void func( int ){}
33
- } test;
34
-
35
- api.set_callback( &TEST::func, &test );
36
- api.push_callback();
37
- }
38
-
39
- ```
29
+ ```
40
- ただ、あまりスマートじゃないような気もします。