gpt4 book ai didi

c++ - 类型转换运算符重载问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:09:30 25 4
gpt4 key购买 nike

例如我有两个类 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 抛出错误:
错误:“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);
}

关于c++ - 类型转换运算符重载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4920530/

25 4 0
文章推荐: C++继承问题
文章推荐: html - 如何保持