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
Sommaire→Le langage C++/CLI→Classes, Interfaces, héritage et types de données→Les types de données→Variables et fonctions statiquesIl existe plusieurs façons d'initialiser des variables statiques dans une classe. On peut tout d'abord le faire à l'initialisation :
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.
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.
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.
public ref class MyConfiguration
{
public:
static property String ^StringConnection;
};Exemple d'appel :
MyConfiguration::StringConnection = "ABC";
Console::WriteLine(MyConfiguration::StringConnection);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):
public ref class ClassMethodeGlobale abstract sealed
{
public:
static void faitQuelqueChose() {};
};


