Je voudrais créer une classe dans laquelle il y aurait un membre statique :
Classe RandInt
{
unsigned long int seed;
public:
RandInt(unsigned long int s=0) : seed(s) {seed=s;};
unsigned long int operator() (void);
unsigned long int GetSeed(void) {return seed;};
}
dans cette classe, j'aimerais que le membre seed soit commune à toutes
les instances de cette classe.
si par exemple operator() était implémenté comme ceci :
unsigned long int RandInt::operator() (void)
{
seed++;
}
J'ai essayé d'utiliser un pointeur pour seed, mais je me heurte à des
problème des constructeurs/desctructeurs. Je n'ai pas l'impression que
ça soit une solution. Je vois bien une solution sans utiliser les
constructeurs/desctructeurs, mais ça me parait pas propre.
J'ai essayé de mettre seed en membre statique, mais ça ne lie pas (par
contre ça compile (VC++6.0). (j'ai changé le constructeur bien sur)
J'ai lu dans mon livre que je pouvais créer une classe spéciale pour ma
seed, et que je devais mettre cette classe en statique dans ma classe
RandInt. J'ai aussi cru comprendre que c'était un peu de la magouille.
Comment fait on concrêtement, et de manière plus ou moins portable ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ivan Vecerina
"AG" wrote in message news:4211feb0$0$3807$
Bonjour,
Je voudrais créer une classe dans laquelle il y aurait un membre statique :
Classe RandInt { unsigned long int seed; public: RandInt(unsigned long int s=0) : seed(s) {seed=s;}; unsigned long int operator() (void); unsigned long int GetSeed(void) {return seed;}; }
dans cette classe, j'aimerais que le membre seed soit commune à toutes les instances de cette classe. ...
J'ai essayé de mettre seed en membre statique, mais ça ne lie pas (par contre ça compile (VC++6.0). (j'ai changé le constructeur bien sur)
Il faut écrire: Classe RandInt { static unsigned long int seed; ....
Puis dans l'implémentation (.cpp), pour que ça lie correctement: unsigned long int RandInt::seed = 0;
En espérant être assez clair. En espérant que ça fasse l'affaire ;)
Ivan -- http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
"AG" <ag@tb.fr> wrote in message
news:4211feb0$0$3807$626a14ce@news.free.fr...
Bonjour,
Je voudrais créer une classe dans laquelle il y aurait un membre statique
:
Classe RandInt
{
unsigned long int seed;
public:
RandInt(unsigned long int s=0) : seed(s) {seed=s;};
unsigned long int operator() (void);
unsigned long int GetSeed(void) {return seed;};
}
dans cette classe, j'aimerais que le membre seed soit commune à toutes les
instances de cette classe.
...
J'ai essayé de mettre seed en membre statique, mais ça ne lie pas (par
contre ça compile (VC++6.0). (j'ai changé le constructeur bien sur)
Il faut écrire:
Classe RandInt
{
static unsigned long int seed;
....
Puis dans l'implémentation (.cpp), pour que ça lie correctement:
unsigned long int RandInt::seed = 0;
En espérant être assez clair.
En espérant que ça fasse l'affaire ;)
Ivan
--
http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
Je voudrais créer une classe dans laquelle il y aurait un membre statique :
Classe RandInt { unsigned long int seed; public: RandInt(unsigned long int s=0) : seed(s) {seed=s;}; unsigned long int operator() (void); unsigned long int GetSeed(void) {return seed;}; }
dans cette classe, j'aimerais que le membre seed soit commune à toutes les instances de cette classe. ...
J'ai essayé de mettre seed en membre statique, mais ça ne lie pas (par contre ça compile (VC++6.0). (j'ai changé le constructeur bien sur)
Il faut écrire: Classe RandInt { static unsigned long int seed; ....
Puis dans l'implémentation (.cpp), pour que ça lie correctement: unsigned long int RandInt::seed = 0;
En espérant être assez clair. En espérant que ça fasse l'affaire ;)
Ivan -- http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
AG
Ivan Vecerina wrote:
Il faut écrire: Classe RandInt { static unsigned long int seed; ok, j'ai fait ça.
....
Puis dans l'implémentation (.cpp), pour que ça lie correctement: unsigned long int RandInt::seed = 0; Dans quel bloc ? Juste dans le .cpp, en dehors de toute fonction ?
Ais-je le droit d'accéder à seed de cette manière si celle-ci est un membre privée ?
AG.
Ivan Vecerina wrote:
Il faut écrire:
Classe RandInt
{
static unsigned long int seed;
ok, j'ai fait ça.
....
Puis dans l'implémentation (.cpp), pour que ça lie correctement:
unsigned long int RandInt::seed = 0;
Dans quel bloc ? Juste dans le .cpp, en dehors de toute fonction ?
Ais-je le droit d'accéder à seed de cette manière si celle-ci est un
membre privée ?
Il faut écrire: Classe RandInt { static unsigned long int seed; ok, j'ai fait ça.
....
Puis dans l'implémentation (.cpp), pour que ça lie correctement: unsigned long int RandInt::seed = 0; Dans quel bloc ? Juste dans le .cpp, en dehors de toute fonction ?
Ais-je le droit d'accéder à seed de cette manière si celle-ci est un membre privée ?
AG.
xavier
AG a dit le 15/02/2005 15:31:
Dans quel bloc ? Juste dans le .cpp, en dehors de toute fonction ?
Oui.
Ais-je le droit d'accéder à seed de cette manière si celle-ci est un membre privée ?
Il s'agit de la définition de la variable, pas d'un accès.
xavier
AG a dit le 15/02/2005 15:31:
Dans quel bloc ? Juste dans le .cpp, en dehors de toute fonction ?
Oui.
Ais-je le droit d'accéder à seed de cette manière si celle-ci est un
membre privée ?
Il s'agit de la définition de la variable, pas d'un accès.