]> git.ipfire.org Git - thirdparty/gcc.git/blob - libvtv/testsuite/povray-derived.cc
Commit the vtable verification feature.
[thirdparty/gcc.git] / libvtv / testsuite / povray-derived.cc
1 // Small test case from povray, see if it reproduces.
2
3 #include <stdio.h>
4
5 class POVMS_MessageReceiver
6 {
7
8 private:
9 int x;
10 class Handler
11 {
12 public:
13 virtual void print() = 0;
14 };
15 protected:
16 template<class T> class MemberHandler : public Handler
17 {
18 public:
19 MemberHandler(T *xx)
20 {
21 x = xx;
22 }
23
24 ~MemberHandler() {}
25
26 void print()
27 {
28 printf("In print\n");
29 }
30 private:
31 T *x;
32 };
33
34 private:
35 struct HandlerNode
36 {
37 Handler *handler;
38 };
39
40 HandlerNode *receiver;
41 public:
42 POVMS_MessageReceiver(int xx) : x(xx) {}
43 ~POVMS_MessageReceiver() {}
44
45 void foo(int *xx);
46 void try_call();
47 };
48
49 void POVMS_MessageReceiver::foo(int *xx)
50 {
51 receiver = new HandlerNode;
52
53 receiver->handler = new MemberHandler<int>(xx);
54 }
55
56 void POVMS_MessageReceiver::try_call()
57 {
58 receiver->handler->print();
59 }
60
61
62 int main()
63 {
64 int loc = 34;
65 POVMS_MessageReceiver a_test(100);
66
67 a_test.foo(&loc);
68 a_test.try_call();
69 }
70
71
72