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->Base::operator=(other)
不工作吗?
Base::operator=(other)
【参考方案1】:
尽管使用private
继承,Something
仍然是Base
,所以允许直接调用Base
的operator =()
,传入的Something
。
所以:Base::operator =(other);
【讨论】:
以上是关于C ++中的私有继承以及如何重用但修饰基类的运算符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章