pointers_to_members
Específico do C++
Especifica se um ponteiro para um membro da classe pode ser declarado antes de sua definição de classe associada e é usado para controlar o tamanho do ponteiro e o código necessários para interpretar o ponteiro.
#pragma pointers_to_members( pointer-declaration, [most-general-representation] )
Comentários
Você pode colocar um pragma pointers_to_members no arquivo de origem como uma alternativa ao uso das opções do compilador de /vmx ou as palavras-chave de herança.
O argumento pointer-declaration especifica se você declarou um ponteiro para um membro antes ou depois da definição de função associada. O argumento pointer-declaration é um dos dois símbolos a seguir:
Argumento |
Comentários |
---|---|
full_generality |
Gerencia o código seguro, às vezes não ideal. Use full_generality se qualquer ponteiro para um membro for declarado antes da definição da classe associada. Esse argumento sempre usa a representação do ponteiro especificada pelo argumento most-general-representation. Equivalente a /vmg. |
best_case |
Gera o código seguro, ideal usando a melhor representação de letras maiúsculas e minúsculas para todos os ponteiros dos membros. Requer a definição da classe antes de declarar um ponteiro para um membro da classe. O padrão é best_case. |
O argumento most-general-representation especifica a menor representação de ponteiro que o compilador pode seguramente usar para referenciar qualquer ponteiro para um membro de uma classe em uma unidade de conversão. O argumento pode ser um destes:
Argumento |
Comentários |
---|---|
single_inheritance |
A representação mais geral é de herança única, ponteiro para uma função de membro. Causa um erro se o modelo de herança de uma definição de classe para a qual um ponteiro para um membro é declarado nunca for múltiplo ou virtual. |
multiple_inheritance |
A representação mais geral é de herança múltipla, ponteiro para uma função de membro. Causa um erro se o modelo de herança de uma definição de classe para a qual um ponteiro para um membro é declarado nunca for virtual. |
virtual_inheritance |
A representação mais geral é de herança virtual, ponteiro para uma função de membro. Nunca causa um erro. Esse argumento é o padrão quando #pragma pointers_to_members(full_generality) é usado. |
Aviso
Nós recomendamos que você coloque o pragma pointers_to_members somente no arquivo de origem que deseja afetar e somente depois de todas políticas de #include.Essa prática diminui o risco de o pragma afetar outros arquivos e de você especificar acidentalmente várias definições para a mesma variável, função, ou nome da classe.
Exemplo
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )