2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / g++.old-deja / g++.mike / p1567.C
blob4f02d84b6d75549b504136fd14f48664b2084946
1 // { dg-do run  }
2 // GROUPS passed vtable
3 extern "C" int printf (const char *, ...);
4 extern "C" void exit(int);
6 class A {
7 public:
8   virtual const char* f1() { return "A::f1"; }
9   virtual const char* f2() { return "A::f2"; }
10   virtual const char* f3() { printf("FAIL\n"); exit(1); return "A::f3"; }
13 class B {
14 public:
15   virtual const char* f2() { return "B::f2"; }
16   virtual const char* f3() { return "B::f3"; }
19 class C: public A, public B {
20 public:
21   const char* f2() { return B::f2(); }
22   const char* f1() { return f2(); }
23   const char* f3() { return A::f3(); }
26 class D: public A, public B {
27 public:
28   const char* f2() { return B::f2(); }
29   const char* f1() { return D :: f2(); }
30   const char* f3() { return A::f3(); }
33 int main() {
34   C* tempC = new C;
35   D* tempD = new D;
36   A* a = tempC;
37   printf("calling f1 on a C gives %s\n", a->f1());
38   a = tempD;
39   printf("calling f1 on a D gives %s\n", a->f1());
40   printf("PASS\n");
41   return 0;