このようにオブジェクトを構成するための良い戦略のように思えました (ポリシーとして):
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
ます。少なくとも何か間違ったことをしているように思えます。このデザインをより良くするにはどうすればよいですか?できれば仮想継承なしで?thx、ドドル