So you have the following situation:
Code:
class A
{
public: int a;
};
class B: public A{};
class C: public B{};
class D: protected C{};
class E: public D{};
class F: public E{};
class G: public F
{
void f(A* pa, B* pb, C* pc, D* pd, E* pe, F* pf, G* pg)
{
pa->a = 0;// OK
pb->a = 0;// OK
pc->a = 0;// OK
pd->a = 0;// ill-fomed
pe->a = 0;// ill-formed
pf->a = 0;// ill-formed
pg->a = 0;/OK
}
};
int main()
{
return 0;
}
with casts from pf, pe and pc to pa from within G strictly speaking also being forbidden?