38 lines
633 B
C++
38 lines
633 B
C++
|
// { dg-do run }
|
||
|
|
||
|
#include <assert.h>
|
||
|
struct A {
|
||
|
A():value(123) {}
|
||
|
int value;
|
||
|
virtual int access() { return this->value; }
|
||
|
};
|
||
|
struct B {
|
||
|
B():value(456) {}
|
||
|
int value;
|
||
|
virtual int access() { return this->value; }
|
||
|
};
|
||
|
struct C : public A, public B {
|
||
|
C():better_value(789) {}
|
||
|
int better_value;
|
||
|
virtual int access() { return this->better_value; }
|
||
|
};
|
||
|
struct D: public C {
|
||
|
D():other_value(987) {}
|
||
|
int other_value;
|
||
|
virtual int access() { return this->other_value; }
|
||
|
};
|
||
|
|
||
|
int use(B *b)
|
||
|
{
|
||
|
return b->access();
|
||
|
}
|
||
|
|
||
|
int main()
|
||
|
{
|
||
|
C c;
|
||
|
assert(use(&c) == 789);
|
||
|
D d;
|
||
|
assert(use(&d) == 987);
|
||
|
return 0;
|
||
|
}
|