La liaison Static Const Int n'est plus littérale
La déclaration d'un membre constant d'une classe a été modifiée entre extensions managées pour C++ vers Visual C++.
Bien que les membres intégraux d' static const soient encore pris en charge, leur attribut de chaînage a changé.Leur précédent attribut de chaînage est désormais porté par un membre intégral littéral.Par exemple, considérez la classe extensions managées suivante :
public __gc class Constants {
public:
static const int LOG_DEBUG = 4;
};
Cela génère les attributs CIL sous-jacents suivants pour le champ (notez l'attribut littéral) :
.field public static literal int32
modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)
Bien qu'elle continue à compiler dans la nouvelle syntaxe :
public ref class Constants {
public:
static const int LOG_DEBUG = 4;
};
il n'émet plus l'attribut littéral, et par conséquent n'est pas affichée comme constante par le runtime CLR :
.field public static int32 modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)
Pour conserver le même attribut littéral d'interlangue, la déclaration en la donnée membre récemment prise en charge d' literal , comme suit,
public ref class Constants {
public:
literal int LOG_DEBUG = 4;
};
Voir aussi
Référence
littéral (extensions du composant C++)
Concepts
Déclarations de membre dans une classe ou interface (C++/CLI)