1234567891011121314151617181920212223242526272829303132333435363738 |
- // { 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;
- }
|