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

getting a pointer or reference to the base class c++

本文关键字:指针 引用 基类 取指 c++ 获取      更新时间:2023-10-16

假设我有三个类class BaseA, class BaseBclass 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之间的转换涉及到arctan和sqrt(你能猜到它是什么吗?)但是我想摆脱演员的角色。

编辑:基类有一些get-set和操作符,它们应该被继承。

为什么不这样呢:

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;
};