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
Koncepcje
Deklaracje członków w obrębie klasy lub interfejsu (C++/CLI)