| // { dg-do assemble } | |
| class A { | |
| public: | |
| int i; | |
| A(int j) : i(j){} | |
| }; | |
| class B : protected A { | |
| public: | |
| B(int j) : A(j){} | |
| void f(){ | |
| A k(*this); | |
| } | |
| }; | |
| class C : protected B { | |
| public: | |
| C(int j) : B(j){} | |
| void f(); | |
| void g(){ | |
| A k(i); | |
| } | |
| }; | |
| class D : public C { | |
| public: | |
| D(int w) : C(i) {} | |
| void j() { A k(*this); } | |
| void h() { i=3; } | |
| }; | |
| void C::f() { | |
| A k(*this); | |
| } | |
| B b(3); | |
| int | |
| main() { | |
| A *z = &b; // { dg-error "" } | |
| } |