多态:同一成员的多态类型

时间:2019-05-09 08:17:53

标签: c++ polymorphism

假设我们有grep '^\[\(+\|-\|+/-\)\] \(Added\|Resolved\|Closed\) \(Feature\|Bug\|Fix\) [0-9]\+:[a-zA-Z]\+-[0-9]\+\..\+' 类(这里的Derived*是区分后缀),它们是从类*派生的。现在,应该将一个成员添加到类Base中,该类的类型需要在派生类中继承其自身类型。在c ++中,它可以表示如下(逻辑上):

Base

class Base { protected: BaseType m_member; }; class Derived1 : Base { DerivedType1 m_member; // this member should be the same member in base class }; class Derived2 : Base { DerivedType2 m_member; }; class BaseType { protected: virtual void foo(); }; class DerivedType1 : BaseType { ... }; class DerivedType2 : BaseType { ... }; 中的m_memberDerived1中正好是m_member,仅更改了类型(甚至新类型都继承自旧类型)。我知道这段代码不能满足我的需要(这里每个类中的Base根本不相关),我该怎么办?

在这种情况下,我考虑过使用m_member(并且没有为boost::static_visitor创建新的类)。但是,派生类需要为类。

现在我对这个问题的临时解决方案是派生类持有与基类相同类型的成员,但以不同方式处理该成员。来源:

Base

那么,还有更好的选择吗?例如。指针?

0 个答案:

没有答案