C ++中的私有继承以及如何重用但修饰基类的运算符? [复制]

Posted

技术标签:

【中文标题】C ++中的私有继承以及如何重用但修饰基类的运算符? [复制]【英文标题】:private inheritance in C++ and How to reuse but decorate an operator of base class? [duplicate] 【发布时间】:2016-10-14 17:00:56 【问题描述】:

我有一个基类和一个名为 Something 的“子”类,它使用私有继承来重用生成的代码。

class Base 
protected:
    Base();
public:
    virtual ~Base()
    void cool();
    Base& operator=(const Base& other);
;
class Something : private Base        
public:
     Something();
     void cool()
           // own stuff
           // call method from base
           Base::cool();
           // own stuff
      

     Something& operator=(const Something& other)
           if (this != &other)
              // do own things

现在,在装饰之间,应该是从基类调用 operator=。 但我不确定我应该如何以正确的方式做到这一点。我应该使用 dynamic_cast 是这样的:

              (dynamic_cast<Base>(*this)).operator =(dynamic_cast<Base>(other));
              // do own things
           
           return *this;
     


最好的问候。

【问题讨论】:

this-&gt;Base::operator=(other) 不工作吗? Base::operator=(other) 【参考方案1】:

尽管使用private继承,Something仍然是Base,所以允许直接调用Baseoperator =(),传入的Something

所以:Base::operator =(other);

【讨论】:

以上是关于C ++中的私有继承以及如何重用但修饰基类的运算符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

❥关于C++之私有继承

c++继承是如何工作的?

c++解决二义性的方法

C中的继承:如何将“超类”属性隐藏到扩展它的类

类的继承和重用

C ++ - 定义 - 私有继承[重复]