@@ -8,16 +8,12 @@ class Dispatcher;
8
8
class Client
9
9
{
10
10
public:
11
- Client (Dispatcher* disp): PtrD(disp )
11
+ Client ()
12
12
{
13
13
std::cout << " In Client::Client\n " ;
14
14
}
15
15
virtual ~Client (){};
16
- virtual void ProcessEvent ()
17
- {
18
- std::cout << " THIS SHOULDN'T HAPPEN --In Client::ProcessEvent\n " ;
19
- }
20
- Dispatcher* PtrD;
16
+ virtual void ProcessEvent () = 0;
21
17
};
22
18
23
19
class Dispatcher
@@ -27,7 +23,6 @@ class Dispatcher
27
23
{
28
24
std::cout << " In Dispatcher::Dispatcher\n " ;
29
25
}
30
- virtual ~Dispatcher (){};
31
26
32
27
void Dispatch (Client* client)
33
28
{
@@ -36,31 +31,24 @@ class Dispatcher
36
31
}
37
32
};
38
33
39
- class DispatcherTrampoline : public Dispatcher
40
- {
41
- public:
42
- using Dispatcher::Dispatcher;
43
- };
44
-
45
34
class ClientTrampoline : public Client
46
35
{
47
36
public:
48
37
using Client::Client;
49
38
50
39
void ProcessEvent () override
51
40
{
52
- PYBIND11_OVERLOAD (void ,Client,ProcessEvent,);
41
+ PYBIND11_OVERLOAD_PURE (void ,Client,ProcessEvent,);
53
42
}
54
43
};
55
44
56
45
TEST_SUBMODULE (issue1552, m)
57
46
{
58
47
py::class_<Client,ClientTrampoline> cli (m," Client" );
59
- cli.def (py::init<Dispatcher* > ());
48
+ cli.def (py::init ());
60
49
cli.def (" ProcessEvent" ,&Client::ProcessEvent);
61
- cli.def_readwrite (" PtrD" ,&Client::PtrD);
62
50
63
- py::class_<Dispatcher,DispatcherTrampoline > dsp (m," Dispatcher" );
51
+ py::class_<Dispatcher> dsp (m," Dispatcher" );
64
52
dsp.def (py::init< >());
65
53
dsp.def (" Dispatch" ,&Dispatcher::Dispatch);
66
54
}
0 commit comments