Static Const Int Linkage não é mais literal
A declaração de um membro constante de uma classe foi alterada de extensões gerenciadas para C++ a Visual C++.
Embora os membros de static const foi integral com suporte ainda, o atributo de vinculação foi alterada. O atributo antigo de vinculação é levado agora um membro integral literal. Por exemplo, considere a seguinte classe de extensão gerenciada:
public __gc class Constants {
public:
static const int LOG_DEBUG = 4;
};
Isso permite gerenciar os seguintes atributos subjacentes de CIL para o campo (observe o atributo literal):
.field public static literal int32
modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)
Quando isso ainda criar na nova sintaxe:
public ref class Constants {
public:
static const int LOG_DEBUG = 4;
};
não emite o atributo literal, e em virtude disso não é exibido como uma constante em tempo de execução de CLR:
.field public static int32 modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)
Para ter o mesmo atributo literal entre processosé idioma, a declaração deve ser alterada para o membro de dados com suporte recente de literal , 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)