获取指向基类c ++的指针或引用

时间:2013-06-08 18:05:58

标签: c++ oop type-conversion

假设我有3个课程class BaseAclass BaseBclass DerivedC(所有前进的delcared)。

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之间的转换涉及arctangents和sqrts(你能猜出它是什么吗?)。但我想摆脱演员阵容。

编辑:基类有一些应该被继承的get-sets和运算符。

1 个答案:

答案 0 :(得分:1)

为什么不呢:

struct Point { float x,y; };
struct Vector { float mag,theta; };
struct PointVector {
  PointVector(const Point& p_,const Vector& v_):p(p_),v(v_) {}
  Point p;
  Vector v;
};