32 lines
444 B
C
32 lines
444 B
C
// { dg-do run }
|
|
void *vp;
|
|
|
|
class silly {
|
|
public:
|
|
virtual int b() { return 1; }
|
|
};
|
|
class solly : silly {
|
|
public:
|
|
virtual int b() { return 2; }
|
|
};
|
|
class thing {
|
|
public:
|
|
virtual int a() { return 3; }
|
|
};
|
|
class thong : public solly, public thing {
|
|
public:
|
|
virtual int a() {
|
|
if (this != vp) return 4;
|
|
else return 0;
|
|
}
|
|
};
|
|
|
|
typedef int(thing::*ping)();
|
|
ping qq = &thing::a;
|
|
|
|
int main() {
|
|
thong b;
|
|
vp = &b;
|
|
return (b.*qq)();
|
|
}
|