1 2 3 class C; 4 5 class A 6 { 7 public: A()8 A() {} GetC()9 C* GetC() { return NULL; } 10 DoSomething(A * a)11 void DoSomething(A* a) {} 12 }; 13 14 15 class B : public A 16 { 17 public: B()18 B() {} 19 20 }; 21 22 23 class C : public B 24 { 25 public: C()26 C() {} 27 }; 28 29 30 class D : public C 31 { 32 public: D()33 D() {} 34 }; 35