1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| template <>
Base * DerivedCreator<d1_trait>::create(ParameterList const & pl) const{
ConcreteParameterList<d1_trait> const & temp =
static_cast<ConcreteParameterList<d1_trait> const & >(pl);
return new Derivee1(temp.i);
}
Base * Factory::create(d1_trait const &, ParameterList const & pl) const{
return DerivedCreator<d1_trait>()::create(pl);
}
template <>
Base * DerivedCreator<d2_trait>::create(ParameterList const & pl) const{
ConcreteParameterList<d2_trait> const & temp =
static_cast<ConcreteParameterList<d2_trait> const & >(pl);
return new Derivee2(temp.str);
}
Base * Factory::create(d2_trait const &, ParameterList const & pl) const{
return DerivedCreator<d2_trait>()::create(pl);
}
/* ... */
/* ... */
template <>
Base * DerivedCreator<dN_trait>::create(ParameterList const & pl) const{
ConcreteParameterList<dN_trait> const & temp =
static_cast<ConcreteParameterList<dN_trait> const & >(pl);
return new DeriveeN(temp.str, temp.d);
}
Base * Factory::create(dN_trait const &, ParameterList const & pl) const{
return DerivedCreator<dN_trait>()::create(pl);
} |
Partager