簡體   English   中英

獲取指向基類c ++的指針或引用

[英]getting a pointer or reference to the base class c++

假設我有3個class BaseAclass BaseB class DerivedCclass 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之間的轉換涉及反正切和sqrts(您能猜出它是什么嗎?)。 但是我想擺脫演員陣容。

編輯:基類具有一些應該繼承的get-sets和operator。

為什么不這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM