OSDN Git Service

Initial revision
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.mike / p1567.C
1 // GROUPS passed vtable
2 extern "C" printf (const char *, ...);
3 extern "C" void exit(int);
4
5 class A {
6 public:
7   virtual const char* f1() { return "A::f1"; }
8   virtual const char* f2() { return "A::f2"; }
9   virtual const char* f3() { printf("FAIL\n"); exit(1); return "A::f3"; }
10 };
11
12 class B {
13 public:
14   virtual const char* f2() { return "B::f2"; }
15   virtual const char* f3() { return "B::f3"; }
16 };
17
18 class C: public A, public B {
19 public:
20   const char* f2() { return B::f2(); }
21   const char* f1() { return f2(); }
22   const char* f3() { return A::f3(); }
23 };
24
25 class D: public A, public B {
26 public:
27   const char* f2() { return B::f2(); }
28   const char* f1() { return D :: f2(); }
29   const char* f3() { return A::f3(); }
30 };
31
32 main() {
33   C* tempC = new C;
34   D* tempD = new D;
35   A* a = tempC;
36   printf("calling f1 on a C gives %s\n", a->f1());
37   a = tempD;
38   printf("calling f1 on a D gives %s\n", a->f1());
39   printf("PASS\n");
40   return 0;
41 }