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.
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
Sylvain
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.
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.
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.
ByB
J'ai envie de hurler à la face du monde que Sylvain a affirmé le 01/06/2006 que
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
J'ai envie de hurler à la face du monde que Sylvain a affirmé le
01/06/2006 que
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
J'ai envie de hurler à la face du monde que Sylvain a affirmé le 01/06/2006 que
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
kanze
ByB wrote:
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.)
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
ByB wrote:
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.)
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
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.)
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