【发布时间】:2011-02-07 11:04:10
【问题描述】:
例如,我有两个类 A 和 B,对于两个对象 a 和 b,我希望能够做到:
一个;
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 类之后定义的。
有没有办法在仍然使用重载的类型转换运算符的同时规避这个问题。如果没有,那么实现我的目标的最佳方式可能是什么。
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
这些实际上被称为“转换”或“转换函数”(标准使用后者)。
标签: c++ casting operator-overloading