Ligação de Int Const estático não é mais Literal
Declaração de um membro constante de uma classe foi alterado de Managed Extensions for C++ para Visual C++.
Embora static const integrais membros ainda são suportados, mudou seu atributo de vinculação.Seu atributo de ligação anterior agora é executado em um membro integral literal.Por exemplo, considere a seguinte classe Managed Extensions:
public __gc class Constants {
public:
static const int LOG_DEBUG = 4;
};
Isso gera os seguintes atributos CIL subjacentes do campo (Observe o atributo literal):
.field public static literal int32
modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)
Enquanto isso ainda compila sob a nova sintaxe:
public ref class Constants {
public:
static const int LOG_DEBUG = 4;
};
ele não emite o atributo literal e, portanto, não é visto como uma constante em tempo de execução CLR:
.field public static int32 modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)
Para que o mesmo atributo literal inter-language, a declaração deve ser alterada para recentemente com suporte literal membro de dados, como segue,
public ref class Constants {
public:
literal int LOG_DEBUG = 4;
};
Consulte também
Referência
literal (Extensões de Componentes C++)
Conceitos
Declarações de membro em uma classe ou uma interface (C++/CLI)