1*c87b03e5Sespie // GROUPS vtable 2*c87b03e5Sespie extern "C" int printf (const char *, ...); 3*c87b03e5Sespie 4*c87b03e5Sespie class A 5*c87b03e5Sespie { 6*c87b03e5Sespie public: ~A()7*c87b03e5Sespie virtual ~A(){}; type(void)8*c87b03e5Sespie virtual int type(void) 9*c87b03e5Sespie { 10*c87b03e5Sespie return -1; 11*c87b03e5Sespie } 12*c87b03e5Sespie }; 13*c87b03e5Sespie 14*c87b03e5Sespie class B 15*c87b03e5Sespie { 16*c87b03e5Sespie public: ~B()17*c87b03e5Sespie virtual ~B(){}; 18*c87b03e5Sespie }; 19*c87b03e5Sespie 20*c87b03e5Sespie 21*c87b03e5Sespie class C0 : public B, public A 22*c87b03e5Sespie { 23*c87b03e5Sespie public: type(void)24*c87b03e5Sespie virtual int type(void) 25*c87b03e5Sespie { 26*c87b03e5Sespie return 0; 27*c87b03e5Sespie } 28*c87b03e5Sespie }; 29*c87b03e5Sespie 30*c87b03e5Sespie class C1 : public C0 31*c87b03e5Sespie { 32*c87b03e5Sespie public: type(void)33*c87b03e5Sespie virtual int type(void) 34*c87b03e5Sespie { 35*c87b03e5Sespie return 1; 36*c87b03e5Sespie } 37*c87b03e5Sespie }; 38*c87b03e5Sespie 39*c87b03e5Sespie class C2 : public C0 40*c87b03e5Sespie { 41*c87b03e5Sespie public: type(void)42*c87b03e5Sespie virtual int type(void) 43*c87b03e5Sespie { 44*c87b03e5Sespie return 2; 45*c87b03e5Sespie } 46*c87b03e5Sespie }; 47*c87b03e5Sespie main()48*c87b03e5Sespieint main() 49*c87b03e5Sespie { 50*c87b03e5Sespie C1 *one = new C1; 51*c87b03e5Sespie 52*c87b03e5Sespie if (one->type() == 1) 53*c87b03e5Sespie { 54*c87b03e5Sespie printf ("PASS\n"); 55*c87b03e5Sespie return 0; 56*c87b03e5Sespie } 57*c87b03e5Sespie else 58*c87b03e5Sespie { 59*c87b03e5Sespie printf ("FAIL\n"); 60*c87b03e5Sespie return 1; 61*c87b03e5Sespie } 62*c87b03e5Sespie } 63