pointers_to_members
Específico do C++
Especifica se um ponteiro para um membro de classe pode ser declarado antes de sua definição de classe associado e é usado para controlar o tamanho do ponteiro e o código necessário para interpretar o ponteiro.
#pragma pointers_to_members( pointer-declaration, [most-general-representation] )
Comentários
Você pode colocar um pointers_to_members pragma no seu arquivo de origem como uma alternativa ao uso do /vmx opções do compilador ou o as palavras-chave de herança.
O declaração de ponteiro argumento especifica se você tenha declarado um ponteiro para um membro antes ou após a definição da função associada.O declaração de ponteiro argumento é uma das duas seguintes símbolos:
Argumento |
Comentários |
---|---|
full_generality |
Gera código seguro, às vezes não ideal.Você pode usar full_generality se nenhum ponteiro para um membro for declarado antes da definição de classe associado.Esse argumento sempre usa a representação de ponteiro especificada pelo maioria-geral-representação argumento.Equivalente a /vmg. |
best_case |
Gera código seguro, ideal usando representação melhor hipótese para todos os ponteiros para os membros.Requer a definição da classe antes de declarar um ponteiro para um membro da classe.O padrão é best_case. |
O maioria-geral-representação argumento especifica a representação de ponteiro menor que o compilador pode usar com segurança para fazer referência a qualquer ponteiro para um membro de uma classe em uma unidade de conversão.O argumento pode ser um destes procedimentos:
Argumento |
Comentários |
---|---|
single_inheritance |
A representação mais geral é herança simples, ponteiro para uma função de membro.Causa um erro se o modelo de herança de uma definição de classe para o qual está declarado como um ponteiro para um membro é sempre um dos vários ou virtual. |
multiple_inheritance |
A representação mais geral é a herança de múltiplos, o ponteiro para uma função de membro.Causa um erro se o modelo de herança de uma definição de classe para o qual está declarado como um ponteiro para um membro é virtual. |
virtual_inheritance |
A representação mais geral é virtual-herança, ponteiro para uma função de membro.Nunca causa um erro.Esse é o argumento padrão quando # pragma pointers_to_members(full_generality) é usado. |
Cuidado |
---|
Aconselhamos você a colocar o pointers_to_members pragma somente o arquivo de código-fonte que você deseja afetar em somente após qualquer #include diretivas.Essa prática reduz o risco de que o pragma afetará outros arquivos e que você irá acidentalmente especificar 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 )