Alors disons que j'ai une classe avec beaucoup d'arguments de modèle, l'un d'entre eux est la classe dérivée d'utiliser CRTP:Comment éviter boilerplate sur des arguments de modèle lors de l'appel constructeur parent
template <typename Derived, typename A, typename B, typename C, typename D>
class BaseFoo {
public:
BaseFoo(A& a) {}
};
Et je veux l'hériter:
class DerivedFoo : public BaseFoo<DerivedFoo, Bc, Cc, Dc, Ec> {
public:
DerivedFoo(A& a) : BaseFoo<DerivedFoo, Bc, Cc, Dc, Ec>(a) {}
};
Y a-t-il une astuce pour éviter tout l'argument de modèle explicite?
Il est correct si je dois toujours indiquer Derived
en tant qu'arguments de modèle.
pourriez-vous utiliser un 'typedef'? –
Vous voulez dire un typedef dans la classe? Je suppose que oui, mais ce serait écrire la longue liste de modèles deux fois. 'typedef BaseFoo ParentClass;' vous voulez dire cela dans DerivedFoo? En raison de la nécessité d'utiliser le CRTP, je ne sais pas comment faire le typedef en dehors de la classe. –
alesegdia
Ne va pas répondre parce que je suppose que si cela était valide, alors quelqu'un aurait déjà mentionné, mais ... pourquoi les modèles variés ne sont pas une solution ici? –