[英]C++ casting a pointer to a reference to pointer of base class in function parameter
[英]getting a pointer or reference to the base class c++
假設我有3個class BaseA
, class BaseB
class DerivedC
和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之間的轉換涉及反正切和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.