Estático em Int Const ligação não é literal
Declaração de um membro de uma classe constante foi alterado de gerenciado Extensions para C++ para Visual C++ 2008.
Embora static const membros integrais ainda são suportados, seu atributo de vinculação foi alterado. Seu atributo de vinculação anterior agora é executado em um literal integral de membros.Por exemplo, considere a seguinte classe gerenciado 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)
Embora 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 estiver exibido sistema autônomo uma constante em tempo de execução CLR:
.field public static int32 modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)
Para ter o mesmo atributo inter-linguagem literal, a declaração deve ser alterada para o recém-suportados literal membro de dados, sistema autônomo a seguir,
public ref class Constants {
public:
literal int LOG_DEBUG = 4;
};
Consulte também
Conceitos
Declarações de membro dentro de uma classe ou interface