membre static partagé par plusieurs templates (enregistrement de classes)

Le
Okerampa
Bonjour. J'ai un peu fouillé dans les archives, mais je n'ai rien
trouvé de semblable (peut être que j'ai mal cherché)

si je fais :
template <class T>
Classe
{
static int i;
}

et que je créée plusieurs classes Classe<int> Classe<Classe2> etc.
j'aurai un membre static différent pour chacune des classes. C'est ce
que je souhaite, car il me faut un identifiant pour chacune de mes
classes

Cependant, j'aimerais aussi avoir un membre static commun à toutes mes
classes, pour par exemple enregistrer un manager.

En gros, je voudrais pouvoir appeler quelque chose comme :
Classe::setControl(xxx) { static
commun_a_toutes_mes_classes_de_template = xxx; }, pour une
initialisation.

Dans les moyens détournés d'y arriver, je ne vois qu'un singleton avec
mon xxx auquel je pourrais accéder depuis un constructeur de
Classe<yyy> (donc j'y accèderais autant de fois que j'ai de classes à
enregistrer), mais j'aimerais autant éviter ce genre de choses
Bref je cherche surtout un moyen de faire de l'enregistrement de
classes automatique.

Voilà, si quelqu'un a déjà rencontré ce problème ou a une solutio=
n
qu'il aime bien
Merci pour tout commentaire ;)

Okerampa, qui aime pas trop les bouts de colle mais bon
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Marc Bourguet
Le #17989351
Okerampa
Bonjour. J'ai un peu fouillé dans les archives, mais je n'ai rien
trouvé de semblable (peut être que j'ai mal cherché...)

si je fais :
template <class T>
Classe
{
static int i;
}

et que je créée plusieurs classes Classe<int> Classe<Classe2> etc.
j'aurai un membre static différent pour chacune des classes. C'est ce
que je souhaite, car il me faut un identifiant pour chacune de mes
classes...

Cependant, j'aimerais aussi avoir un membre static commun à toutes mes
classes, pour par exemple enregistrer un manager.



Si j'ai bien compris:

class Base_Commune
{
protected:
static int counter;
};

template <typename T>
class Classe: private Base_Commune
{
private:
static int id;
};

...

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Okerampa
Le #18002061
On 28 nov, 18:43, Jean-Marc Bourguet
Okerampa > Bonjour. J'ai un peu fouillé dans les archives, mais je n'ai rien
> trouvé de semblable (peut être que j'ai mal cherché...)

> si je fais :
> template <class T>
> Classe
> {
>     static int i;
> }

> et que je créée plusieurs classes Classe<int> Classe<Classe2> etc.
> j'aurai un membre static différent pour chacune des classes. C'est ce
> que je souhaite, car il me faut un identifiant pour chacune de mes
> classes...

> Cependant, j'aimerais aussi avoir un membre static commun à toutes me s
> classes, pour par exemple enregistrer un manager.

Si j'ai bien compris:

class Base_Commune
{
protected:
static int counter;

};

template <typename T>
class Classe: private Base_Commune
{
private:
static int id;

};




Oui. Très sottement je m'étais dit que ça ne ferait que déplacer le
problème alors qu'en fait ça le résout :p (vu que la variable restera
bien unique et partagée par toutes les classes dérivées quelles
qu'elles soient).

Merci !
Publicité
Poster une réponse
Anonyme