class B;
class A {
    public: B method() { return B(); }
};
class B: public A {}
みたいな循環した宣言って無理?