1 | static int g_next_value = 12345; |
2 | |
3 | struct VBase { |
4 | VBase() : m_value(g_next_value++) {} |
5 | virtual ~VBase() {} |
6 | int m_value; |
7 | }; |
8 | |
9 | struct Derived1 : public virtual VBase { |
10 | }; |
11 | |
12 | struct Derived2 : public virtual VBase { |
13 | }; |
14 | |
15 | struct Joiner1 : public Derived1, public Derived2 { |
16 | long x = 1; |
17 | }; |
18 | |
19 | struct Joiner2 : public Derived2 { |
20 | long y = 2; |
21 | }; |
22 | |
23 | int main(int argc, const char *argv[]) { |
24 | Joiner1 j1; |
25 | Joiner2 j2; |
26 | Derived2 *d = &j1; |
27 | d = &j2; // breakpoint 1 |
28 | return 0; // breakpoint 2 |
29 | } |
30 | |