#include <cstddef>
class C;
class A
{
public:
A() {}
C* GetC() { return NULL; }
void DoSomething(A* a) {}
};
class B : public A
B() {}
class C : public B
C() {}
class D : public C
D() {}