1e01aa904Sopenharmony_cistruct base 2e01aa904Sopenharmony_ci{ 3e01aa904Sopenharmony_ci enum mode : short { in, out, top, bottom }; 4e01aa904Sopenharmony_ci enum state { pass, fail, unknown }; 5e01aa904Sopenharmony_ci typedef long int_type; 6e01aa904Sopenharmony_ci}; 7e01aa904Sopenharmony_ci 8e01aa904Sopenharmony_cistruct A : public base 9e01aa904Sopenharmony_ci{ 10e01aa904Sopenharmony_ci int_type _M_i; 11e01aa904Sopenharmony_ci int_type _M_n; 12e01aa904Sopenharmony_ci mode _M_type; 13e01aa904Sopenharmony_ci}; 14e01aa904Sopenharmony_ci 15e01aa904Sopenharmony_cistruct B : public base 16e01aa904Sopenharmony_ci{ 17e01aa904Sopenharmony_ci mode _M_type; 18e01aa904Sopenharmony_ci state _M_state; 19e01aa904Sopenharmony_ci}; 20e01aa904Sopenharmony_ci 21e01aa904Sopenharmony_cistruct C1 : public base 22e01aa904Sopenharmony_ci{ 23e01aa904Sopenharmony_ci mode _M_type; 24e01aa904Sopenharmony_ci}; 25e01aa904Sopenharmony_ci 26e01aa904Sopenharmony_cistruct C2 : virtual public base 27e01aa904Sopenharmony_ci{ 28e01aa904Sopenharmony_ci mode _M_type; 29e01aa904Sopenharmony_ci}; 30e01aa904Sopenharmony_ci 31e01aa904Sopenharmony_cistruct C3 : public base 32e01aa904Sopenharmony_ci{ 33e01aa904Sopenharmony_ci mode _M_type; 34e01aa904Sopenharmony_ci 35e01aa904Sopenharmony_ci virtual ~C3() { }; 36e01aa904Sopenharmony_ci}; 37e01aa904Sopenharmony_ci 38e01aa904Sopenharmony_cistruct C4 : public base 39e01aa904Sopenharmony_ci{ 40e01aa904Sopenharmony_ci mode _M_type; 41e01aa904Sopenharmony_ci 42e01aa904Sopenharmony_ci virtual void foo() = 0; 43e01aa904Sopenharmony_ci}; 44e01aa904Sopenharmony_ci 45e01aa904Sopenharmony_cistruct D1 : public A 46e01aa904Sopenharmony_ci{ 47e01aa904Sopenharmony_ci int_type _M_index; 48e01aa904Sopenharmony_ci int_type* _M_array; 49e01aa904Sopenharmony_ci bool _M_ok; 50e01aa904Sopenharmony_ci}; 51e01aa904Sopenharmony_ci 52e01aa904Sopenharmony_cistruct D2 : public C1 53e01aa904Sopenharmony_ci{ 54e01aa904Sopenharmony_ci state _M_state; 55e01aa904Sopenharmony_ci int_type _M_index; 56e01aa904Sopenharmony_ci int_type* _M_array; 57e01aa904Sopenharmony_ci bool _M_ok; 58e01aa904Sopenharmony_ci}; 59e01aa904Sopenharmony_ci 60e01aa904Sopenharmony_cistruct D3 : public C1 61e01aa904Sopenharmony_ci{ 62e01aa904Sopenharmony_ci int_type _M_index; 63e01aa904Sopenharmony_ci int_type* _M_array; 64e01aa904Sopenharmony_ci}; 65e01aa904Sopenharmony_ci 66e01aa904Sopenharmony_cistruct D2v : virtual public C2 67e01aa904Sopenharmony_ci{ 68e01aa904Sopenharmony_ci state _M_state; 69e01aa904Sopenharmony_ci int_type _M_index; 70e01aa904Sopenharmony_ci int_type* _M_array; 71e01aa904Sopenharmony_ci bool _M_ok; 72e01aa904Sopenharmony_ci}; 73e01aa904Sopenharmony_ci 74e01aa904Sopenharmony_cistruct D3v : virtual public C3 75e01aa904Sopenharmony_ci{ 76e01aa904Sopenharmony_ci int_type _M_index; 77e01aa904Sopenharmony_ci int_type* _M_array; 78e01aa904Sopenharmony_ci}; 79e01aa904Sopenharmony_ci 80e01aa904Sopenharmony_cistruct D4v : public C4 81e01aa904Sopenharmony_ci{ 82e01aa904Sopenharmony_ci int_type _M_index; 83e01aa904Sopenharmony_ci int_type* _M_array; 84e01aa904Sopenharmony_ci 85e01aa904Sopenharmony_ci void foo() { } 86e01aa904Sopenharmony_ci}; 87e01aa904Sopenharmony_ci 88e01aa904Sopenharmony_cistruct D5v1 : virtual public C3 89e01aa904Sopenharmony_ci{ 90e01aa904Sopenharmony_ci int_type _M_index; 91e01aa904Sopenharmony_ci}; 92e01aa904Sopenharmony_ci 93e01aa904Sopenharmony_cistruct D5v2 : virtual public C3 94e01aa904Sopenharmony_ci{ 95e01aa904Sopenharmony_ci int_type _M_index; 96e01aa904Sopenharmony_ci}; 97e01aa904Sopenharmony_ci 98e01aa904Sopenharmony_ci// test 99e01aa904Sopenharmony_cistruct Dd1 : public A, public B 100e01aa904Sopenharmony_ci{ }; 101e01aa904Sopenharmony_ci 102e01aa904Sopenharmony_cistruct Dd2 : public A, public D4v 103e01aa904Sopenharmony_ci{ }; 104e01aa904Sopenharmony_ci 105e01aa904Sopenharmony_cistruct Dd3 : public D2, public D3 106e01aa904Sopenharmony_ci{ }; 107e01aa904Sopenharmony_ci 108e01aa904Sopenharmony_cistruct Dd4 : public D2v, public D3v 109e01aa904Sopenharmony_ci{ }; 110e01aa904Sopenharmony_ci 111e01aa904Sopenharmony_cistruct Dd5 : public D5v1, public D5v2 112e01aa904Sopenharmony_ci{ }; 113e01aa904Sopenharmony_ci 114e01aa904Sopenharmony_ci 115e01aa904Sopenharmony_ciint main() 116e01aa904Sopenharmony_ci{ 117e01aa904Sopenharmony_ci Dd1 obj1; 118e01aa904Sopenharmony_ci Dd2 obj2; 119e01aa904Sopenharmony_ci Dd3 obj3; 120e01aa904Sopenharmony_ci Dd4 obj4; 121e01aa904Sopenharmony_ci Dd5 obj5; 122e01aa904Sopenharmony_ci return 0; 123e01aa904Sopenharmony_ci} 124