Udostępnij za pośrednictwem


Połączenie static const int nie jest już literałem

Oświadczenie o stałym członkiem klasy zmienił się z zarządzanych rozszerzeń języka C++ do Visual C++.

Chociaż static const integralną członków nadal są obsługiwane, ich powiązanie atrybut został zmieniony.Atrybut ich powiązania były odbywa się teraz w literału członek integralną.Na przykład rozważmy następujące klasy zarządzane rozszerzenia:

public __gc class Constants {
public:
   static const int LOG_DEBUG = 4;
};

Generuje następujące atrybuty podstawowej CIL dla pola (Uwaga literału atrybut):

.field public static literal int32 
modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)

Podczas gdy nadal kompiluje pod nowe elementy składni:

public ref class Constants {
public:
   static const int LOG_DEBUG = 4;
};

nie emituje literału atrybutu, a zatem nie jest postrzegany jako stała przez CLR runtime:

.field public static int32 modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)

Mają ten sam atrybut literału między języka, w celu zgłoszenia powinny zostać zmienione na nowo obsługiwanych literal członek danych w następujący sposób,

public ref class Constants {
public:
   literal int LOG_DEBUG = 4;
};

Zobacz też

Informacje

literał (Visual C++)

Koncepcje

Deklaracje członków w obrębie klasy lub interfejsu (C++/CLI)