 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
ByB Guest
|
Posted: Thu Jun 01, 2006 11:19 pm Post subject: compteur static |
|
|
Bonjour,
Dans un porgramme, j'ai une classe représentant une fenêtre avec des
données dedans. Je dois laisser à l'utilisateur la possibilité d'ouvrir
au plus trois fenêtres de ce type (par le biais d'un menu).
L'utilisateur ouvre les fenêtres une à une, jusqu'à 3 au maximum.
Il faut donc que je dispose d'un moyen de compter les fenêtres, et
aussi d'un moyen de les identifier, afin d'envoyer les bonnes données à
la bonne fenêtre.
Je pensais donc doter la classe d'un donnée statique (static int
compteur) capable de compter le nombre d'occurrences de la fenêtre et
de bloquer après la troisième.
Le problème est donc d'initialiser ce compteur. En clair, où faut il le
mettre à 0, avant de l'incrémenter à chaque ouverture de fenêtre ?
Merci de vos conseils.
--
Du fait de la crise conjoncturelle, il serait intéressant d'avoir à
l'esprit toutes les alternatives déjà en notre possession. |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Fri Jun 02, 2006 12:30 am Post subject: Re: compteur static |
|
|
ByB wrote on 01/06/2006 20:19:
| Quote: |
Le problème est donc d'initialiser ce compteur. En clair, où faut il le
mettre à 0, avant de l'incrémenter à chaque ouverture de fenêtre ?
il faut simplement initialiser la donnée statique à zéro lors de sa |
déclaration (dans le .cpp de la classe).
int MyClassWindow::refCounter = 0;
une donnée statique (globale ou d'une classe) à un espace réservé par le
linker lorqu'il assemble les morceaux, cet espace est ou non initialisé
selon les déclarations propres à chaque variable, si une variable l'est,
sa valeur est fixée à chaque demarrage de l'appli ou chaque chargement
de la librairie selon la nature du module de code.
Sylvain. |
|
| Back to top |
|
 |
ByB Guest
|
Posted: Fri Jun 02, 2006 6:20 am Post subject: Re: compteur static |
|
|
J'ai envie de hurler à la face du monde que Sylvain a affirmé le
01/06/2006 que
| Quote: | ByB wrote on 01/06/2006 20:19:
Le problème est donc d'initialiser ce compteur. En clair, où faut il le
mettre à 0, avant de l'incrémenter à chaque ouverture de fenêtre ?
il faut simplement initialiser la donnée statique à zéro lors de sa
déclaration (dans le .cpp de la classe).
int MyClassWindow::refCounter = 0;
une donnée statique (globale ou d'une classe) à un espace réservé par le
linker lorqu'il assemble les morceaux, cet espace est ou non initialisé selon
les déclarations propres à chaque variable, si une variable l'est, sa valeur
est fixée à chaque demarrage de l'appli ou chaque chargement de la librairie
selon la nature du module de code.
Sylvain.
|
OK, merci.
--
LA FINALITE PONCTUE LES PROCESSUS FONDAMENTAUX DE LA DEMARCHE |
|
| Back to top |
|
 |
kanze Guest
|
Posted: Fri Jun 02, 2006 8:20 am Post subject: Re: compteur static |
|
|
ByB wrote:
| Quote: | Dans un porgramme, j'ai une classe représentant une fenêtre
avec des données dedans. Je dois laisser à l'utilisateur la
possibilité d'ouvrir au plus trois fenêtres de ce type (par le
biais d'un menu). L'utilisateur ouvre les fenêtres une à une,
jusqu'à 3 au maximum.
Il faut donc que je dispose d'un moyen de compter les
fenêtres, et aussi d'un moyen de les identifier, afin
d'envoyer les bonnes données à la bonne fenêtre.
|
Au moins d'avoir beaucoup de fenêtres, un int me semble tout
indiqué pour le comptage. (Réalistiquement, je crois qu'on
pourrait même se passer des vérifications de débordement ici.)
Quant à l'identification, est-ce que le système ne t'en livre
pas un ? (Je sais que X/Windows le fait ; je ne me connais pas
aussi bien en MS-Windows.)
| Quote: | Je pensais donc doter la classe d'un donnée statique (static
int compteur) capable de compter le nombre d'occurrences de la
fenêtre et de bloquer après la troisième.
Le problème est donc d'initialiser ce compteur. En clair, où
faut il le mettre à 0, avant de l'incrémenter à chaque
ouverture de fenêtre ?
|
Toutes les variables statiques sont implicitement initialisées à
0, sans que tu ne le démandes. Pour d'autres valeurs (et souvent
pour 0 aussi, pour qu'on l'voit clairement), on met
l'initialisation dans la définition, exactement comme pour
n'importe quelle variable (locale ou d'autre).
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34 |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|