假设我们有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_member
在Derived1
中正好是m_member
,仅更改了类型(甚至新类型都继承自旧类型)。我知道这段代码不能满足我的需要(这里每个类中的Base
根本不相关),我该怎么办?
在这种情况下,我考虑过使用m_member
(并且没有为boost::static_visitor
创建新的类)。但是,派生类需要为类。
现在我对这个问题的临时解决方案是派生类持有与基类相同类型的成员,但以不同方式处理该成员。来源:
Base
那么,还有更好的选择吗?例如。指针?