像这样组合我的对象(作为策略)似乎是一个很好的策略:
template<typename FluxType, typename SourceType>
class Model : public FluxType, public SourceType
{ };
//later in the code:
template<typename FluxType, typename SourceType>
class ConcreteModel : public Model<FluxType, SourceType>
{};
但是,FluxType
和SourceType
是使用相同数据的类。所以我使用了虚拟继承:
class ConcreteModelProps{};
class ConcreteFlux : virtual public ConcreteModelProps
{};
class ConcreteFlux2 : virtual public ConcreteModelProps
{/*sligthly different implementation*/};
class ConcreteSource : virtual public ConcreteModelProps
{};
class DefaultSource2
{/*no need for data*/};
这样我就可以ConcreteModel
用不同FluxType
的SourceType
对象来组成我的。
ConcreteModel<ConcreteFlux, DefaultSource2> /*or whatever*/.
事实是 中定义的数据ConcreteModelProps
与ConcreteModel
. 在我看来,我至少做错了什么。我怎样才能使这个设计更好?最好没有虚拟继承?谢谢,dodol