|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2006 Messages : 155 ![]() |
Bonjour,
J'ai créé statiquement trois instances d'une classe Z : A B et C dans un fichier cpp. Comment accéder à ces trois instances à partir d'un autre cpp ? Merci |
|
|
00
|
|
|
#2 | ||||||||||
|
Membre Expert
![]() ![]() david Responsable développement Inscription : décembre 2003 Messages : 1 296 ![]() |
Bonjour.
Je te donne du code (fait sous Visual Studio) : main.cpp : Code :
Code :
Code :
Code :
Code :
J'ai déclaré les variables statiques dans un .h. Si je ne dis pas de bêtises, une variable déclarée statique dans un .cpp ne pourra être connue que dans ce même .cpp.
__________________
Media Foundation video decoder mpeg1/mpeg2, MediaSource Kinect http://sourceforge.net/projects/mfnode/ http://jeux.developpez.com/faq/directx/?page=dshow |
||||||||||
|
|
01
|
|
|
#3 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 551 ![]() |
Bonjour,
Je pense qu'il y a mecomprehension du langage et des mots-clés. Que veux-tu faire réellement ? Sais-tu vraiment comment s'utilise static ? |
|
|
00
|
|
|
#4 | ||||
|
Membre du Club
![]() Inscription : septembre 2010 Messages : 67 ![]() |
Bonjour,
Pourrais tu préciser ce que tu voudrais faire ? Il est possible que cet exemple t'aide : Code :
Code :
|
||||
|
|
00
|
|
|
#5 | |||
![]() ![]() Inscription : juin 2008 Messages : 7 631 ![]() |
Citation:
S'il s'agit de faire Code fichier1.c :
Note que de telles variables globales vont présenter des problèmes communs aux singletons si récriés. Je te conseille la lecture du billet d'Emmanuel : Etes-vous atteint de Singletonite ? @moldavi : le fait de définir les variables static TYPE A; dans le fichier d'en-tête aboutit à créer une variable différente dans chaque fichier compilé incluant l'en-tête. Autrement dit, dans ton exemple main et Test::FaireLeTest adressent deux jeux de variables A,B et C différents. |
|||
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() ![]() david Responsable développement Inscription : décembre 2003 Messages : 1 296 ![]() |
Citation:
A question naïve, réponse naïve. Evidemment, je ne vois pas d'intérêt à utiliser une classe static dans plusieurs cpp.
__________________
Media Foundation video decoder mpeg1/mpeg2, MediaSource Kinect http://sourceforge.net/projects/mfnode/ http://jeux.developpez.com/faq/directx/?page=dshow |
|
|
|
00
|
|
|
#7 | |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 551 ![]() |
Citation:
static signifie "unique dans l'unité de compilation", soit dans un .cpp donné donc vouloir utiliser quelque chose d'unique à un cpp dans d'autres cpp relève au mieux de la mécompréhension et du mauvais terme utilisé, au pire d'une incongruité neuronale (ou self mind-fuck) ![]() veut-il un singleton et donc un membre static ? juste une méthode static ? une déclaration extern ? autre chose ? |
|
|
|
00
|
|
|
#8 | |
![]() ![]() Inscription : juin 2008 Messages : 7 631 ![]() |
Salut,
Citation:
=> étendre la durée de vie d'une variable : une variable membre d'une classe ou une variable locale à une fonction déclarées static auront une durée de vie non plus limitée à celle du contexte l'englobant mais s'étendra de leur construction jusqu'à la fin du programme. => uniquement pour les variables globales d'une unité de compilation (variable ayant une 'portée d'espace de nom') , réduire la portée du nom à cette unité de compilation. Ceci peut aussi être atteint en utilisant un espace de nom anonyme. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com