IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ C++/CLI et VC++.Net

FAQ C++/CLI et VC++.NetConsultez toutes les FAQ

Nombre d'auteurs : 29, nombre de questions : 248, création le 22 février 2013 

 
OuvrirSommaireLe langage C++/CLIClasses, Interfaces, héritage et types de donnéesLes types de donnéesVariables et fonctions statiques

Il existe plusieurs façons d'initialiser des variables statiques dans une classe. On peut tout d'abord le faire à l'initialisation :

 
Sélectionnez
public ref class MyStatic
{
public:
   static int ^ val1 =2;
};

C++/CLI permet d'utiliser également un constructeur statique, alors que le C++ ne l'autorise pas. C'est dans ce constructeur qu'on va s'occuper d'initialiser les variables statiques.
Ce constructeur devra être déclaré en private, et ne pourra pas posséder de paramètres. On le précédera par le mot clé static.

 
Sélectionnez
public ref class MyStatic
{
public:
   static int ^ val1;
private:
   static MyStatic()
   {
	   val1 = 3;
   }
};

NB : Le constructeur statique est appelé par défaut par le CLR.

Créé le 27 mars 2007  par nico-pyright(c)

Afin d'avoir une variable accessible de n'importe quel endroit de son application il faut la déclarer static.
Cette pratique est en général à déconseiller aux débutants, mais peut s'avérer indispensable dans certaines utilisations.

En général, on créera une classe qui regroupe toutes les variables accessibles de n'importe quel endroit. Il peut s'agir d'une classe de configuration par exemple.

 
Sélectionnez
public ref class MyConfiguration
{
public:
   static property String ^StringConnection;
};

Exemple d'appel :

 
Sélectionnez
	MyConfiguration::StringConnection = "ABC";
	Console::WriteLine(MyConfiguration::StringConnection);
Mis à jour le 9 octobre 2008  par dev01, nico-pyright(c)

Une méthode globale "façon C" ne respecte pas la norme CLS. On peut construire un équivalent en faisant une classe statique, non dérivable (grâce aux mots clés abstract et sealed):

 
Sélectionnez
public ref class ClassMethodeGlobale abstract sealed
{
public:
   static void faitQuelqueChose() {};
};
Créé le 27 mars 2007  par nico-pyright(c)

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006-2007 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.