Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / g++.old-deja / g++.mike / pmf1.C
blob15460ebaaa506208cf8c5568541c97650f049f40
1 // { dg-do run  }
2 // extern "C" printf(const char *, ...);
4 class X
6 public:
7   int  a;
8   int f(int);
9 };
11 class Y
13 public:
14   int b;
15   int c;
16   int g(int);
19 class MD : public X, public Y
21 public:
22   int c;
23   int hf(int);
26 int MD::* pmi0 = &MD::a;
27 int MD::* pmi1 = &MD::b;
28 int MD::* pmi2 = &MD::c;
30 int (MD::* pmf0)(int) = &MD::f;
31 int (MD::* pmf1)(int) = &MD::g;
32 int (MD::* pmf2)(int) = &MD::hf;
34 int main()
36   MD obj;
37   int fail = 0;
39   obj.a = 1;
40   obj.b = 2;
41   obj.c = 3;
43   obj.*pmi0 = 7;
44   obj.*pmi1 = 8;
45   obj.*pmi2 = 9;
47   fail += (obj.*pmf0)(7);
48   fail += (obj.*pmf1)(8);
49   fail += (obj.*pmf2)(9);
51 #if 0
52   if (fail != 0)
53     printf ("failed %d tests\n", fail);
54   else
55     printf ("passed\n");
57   printf ("sizeof(X) = %d, sizeof(Y) = %d, sizeof(MD) = %d\n",
58           sizeof(X), sizeof(Y), sizeof(MD));
59 #endif
60   return fail;
63 int X::f(int v)
65   if (v != a)
66   {
67 //    printf ("failed in X::f, a = %d\n", a);
68     return 1;
69   }
70   return 0;
73 int Y::g(int v)
75   if (v != b)
76   {
77 //    printf ("failed in Y::g, b = %d\n", b);
78     return 1;
79   }
80   return 0;
83 int MD::hf(int v)
85   if (v != c)
86   {
87 //    printf ("failed in MD::hf, c = %d\n", c);
88     return 1;
89   }
90   return 0;