获取指向c++基类的指针或引用
getting a pointer or reference to the base class c++
假设我有三个类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之间的转换涉及到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;
};
相关文章:
- 如何使用基类指针引用派生类成员
- 将常量指针引用绑定到非常量指针
- 如果非动态变量被指针引用,何时超出范围?
- 转换指针引用的字符串
- 指针引用的生存期(以 C++为单位)
- 从 unique_ptr::get 发送指针作为指针引用进入函数
- 指针/引用的 CLion 格式
- 使用模板专用化来比较指针引用
- 如何保存指向抽象基类的指针/引用,但在 c++ 中仍然可以复制
- C++初始化指针/引用/复制细微差别
- 用数组或指针引用函数?
- 指针范围问题和返回类中封装的指针向量内的指针引用
- 强制转换为指针引用是否会导致未定义的行为
- 访问由 void 指针引用的结构的成员
- C 为什么当先前的步骤引发异常时,std :: shared_ptr的指针引用会被破坏
- 动态指针引用数组由三元运算符返回值,但有异常
- 悬空指向 int 和 char* 常量的指针/引用
- C++ 二维数组和指针引用
- 通过使用指针/引用,在C++中使用向量加快计算速度
- C++非类型模板模板到函数指针/引用