假设我有 3 个课程class BaseA
,class BaseB
并且class DerivedC
(全部向前)。
class BaseA
{
public:
BaseA();
BaseA(const BaseB&);
};
和
class BaseB
{
public:
BaseB();
BaseB(const BaseA&);
};
如您所见,A 类和 B 类是“对称兼容的”(我发明的一个短语),因此可以相互转换。
class DerivedC: virtual BaseA, virtual BaseB
{
public:
DerivedC();
DerivedC(const BaseA &a): BaseA(a), BaseB(a) {};
DerivedC(const BaseB &b): BaseA(b), BaseB(b) {};
void A() {
(BaseA)*this = (BaseB)*this;
};
};
我想知道是否有更优雅/更有效的方法来做到这一点。我想将 DerivedC 的 BaseA 部分设置为等于 DerivedC 的 BaseB 部分,但是这些类是低级别的并且使用频率很高,我更喜欢只使用高级别的类作为最后的手段。
编辑: A 和 B 之间的转换涉及反正切和平方(你能猜出它是什么吗?)。但我想远离演员表。
编辑:基类有一些应该被继承的get-sets和操作符。