blob: aa1ea3efaefb543cb4a403cc08ce6028d629af73 [file] [log] [blame]
// { dg-do run }
// extern "C" int printf(const char *, ...);
class X
{
public:
int a;
int f(int);
};
class Y
{
public:
int b;
int c;
int g(int);
};
class MD : public X, public Y
{
public:
int c;
int hf(int);
};
int MD::* pmi0 = &MD::a;
int MD::* pmi1 = &MD::b;
int MD::* pmi2 = &MD::c;
int (MD::* pmf0)(int) = &MD::f;
int (MD::* pmf1)(int) = &MD::g;
int (MD::* pmf2)(int) = &MD::hf;
int main()
{
MD obj;
int fail = 0;
obj.a = 1;
obj.b = 2;
obj.c = 3;
obj.*pmi0 = 7;
obj.*pmi1 = 8;
obj.*pmi2 = 9;
fail += (obj.*pmf0)(7);
fail += (obj.*pmf1)(8);
fail += (obj.*pmf2)(9);
#if 0
if (fail != 0)
printf ("failed %d tests\n", fail);
else
printf ("passed\n");
printf ("sizeof(X) = %d, sizeof(Y) = %d, sizeof(MD) = %d\n",
sizeof(X), sizeof(Y), sizeof(MD));
#endif
return fail;
}
int X::f(int v)
{
if (v != a)
{
// printf ("failed in X::f, a = %d\n", a);
return 1;
}
return 0;
}
int Y::g(int v)
{
if (v != b)
{
// printf ("failed in Y::g, b = %d\n", b);
return 1;
}
return 0;
}
int MD::hf(int v)
{
if (v != c)
{
// printf ("failed in MD::hf, c = %d\n", c);
return 1;
}
return 0;
}