Typecast运算符重载问题

kny*_*are 0 c++ casting operator-overloading

例如,我有两个类A和B,这样对于两个对象a和b,我希望能够做到:
A a;
B b;
a = b;
b = a;

为此我已经重载了=运算符,并且类型转换操作符为:

class A{
-snip-
    operator B()const { return B(pVarA); }
};
class B{
-snip-
    operator A()const { return A(pVarB); }
};

但是当我尝试编译此代码时,gcc会抛出错误:
error: expected type-specifier before 'B'
对于该行: operator B()const { return B(pVarA);}

我的猜测是,这是由于鸡和鸡蛋问题,因为B类是在A类后定义的.

有没有办法在仍然使用重载的类型转换操作符时绕过这个.如果没有,那么可能是实现目标的最佳方式.

任何帮助将不胜感激.提前致谢.