2 votes

Héritage sélectif de membres statiques avec CRTP

J'ai donc cette hiérarchie de classe qui utilise le CRTP :

template <class T>
class A { 
  static Object x;
  static OtherObject y;
}

class B : public A<B> {
}

class C : public A<C> {
}

L'idée de départ est que B et C ne partagent pas d'instances de x et de y, puisque A<B> y A<C> sont considérées comme des classes distinctes. Mais supposons qu'il ait été décidé, pour des raisons d'économie de ressources, que "x" soit une instance singleton partagée par B et C, tandis qu'une instance de "y" devrait toujours être créée pour chaque classe dérivée. Existe-t-il un moyen d'y parvenir ?

Merci d'avance.

3voto

R Sahu Points 24027

Vous pouvez faire en sorte que le modèle de classe dérive d'une autre classe. Définir x dans la classe de base.

class ABase { 
  static Object x;
};

template <class T>
class A : public ABase { 
  static OtherObject y;
}

class B : public A<B> {
}

class C : public A<C> {
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X