OSDN Git Service

update
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.mike / p4736b.C
1 // prms-id: 4736
2
3 class Rep {
4 public:
5   virtual int foo() { return 1; }
6 };
7
8 class Rep_1 : public Rep {
9 };
10
11 class VBaseMain {
12 public:
13   virtual int foo() { return 2; }
14 };
15
16 class OtherVBase {
17 public:
18   virtual int foo() { return 3; }
19 };
20
21 class Rep_2 : public Rep {
22 };
23
24 class DVBase : public VBaseMain, public Rep_2, public OtherVBase {
25 public:
26   virtual int foo() { return 4; }
27 };
28
29 class Main : public Rep_1, virtual public DVBase {
30 public:
31   virtual int foo() { return 5; }
32 };
33
34 main() {
35   Main m;
36   if (m.foo() != 5)
37     return 1;
38   if (((Rep*)(Rep_1*)&m)->foo() != 5)
39     return 2;
40   if (((DVBase*)&m)->foo() != 5)
41     return 3;
42   if (((VBaseMain*)(DVBase*)&m)->foo() != 5)
43     return 4;
44   if (((Rep*)(Rep_2*)(DVBase*)&m)->foo() != 5)
45     return 5;
46   if (((OtherVBase*)(DVBase*)&m)->foo() != 5)
47     return 6;
48 }