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类后定义的.
有没有办法在仍然使用重载的类型转换操作符时绕过这个.如果没有,那么可能是实现目标的最佳方式.
任何帮助将不胜感激.提前致谢.
尝试向前声明,然后提供实际的函数定义:
class B;
class A{
-snip-
operator B()const;
};
class B{
-snip-
operator A()const;
};
inline A::operator B() const
{
return B(pVarA);
}
inline B::operator A() const
{
return A(pVarB);
}
Run Code Online (Sandbox Code Playgroud)