Compartilhar via


/vmm, /vms, /vmv (representação de uso geral)

Usado quando /vmg é selecionado como o método de representação. Essas opções indicam o modelo de herança da definição de classe ainda não encontrada.

Sintaxe

/vmm
/vms
/vmv

Opções

/vmm
Especifica a representação mais geral de um ponteiro para um membro de uma classe como uma que usa herança múltipla.

A palavra-chave de herança e o argumento correspondente para #pragma pointers_to_members é multiple_inheritance.

Essa representação é maior do que a necessária para herança única.

Se você usar /vmm e declarar um ponteiro para membro de uma classe que tenha um modelo de herança virtual, o compilador gerará um erro.

/vms
Especifica a representação mais geral de um ponteiro para um membro de uma classe como um que não usa herança ou herança única. A palavra-chave de herança e o argumento correspondente para #pragma pointers_to_members é single_inheritance.

Essa opção gera a menor representação possível de um ponteiro para um membro de uma classe.

Se você usar /vms e declarar um ponteiro para membro de uma classe que tenha um modelo de herança múltipla ou virtual, o compilador gerará um erro.

/vmv
Especifica a representação mais geral de um ponteiro para um membro de uma classe como uma que usa herança virtual. Essa representação de ponteiro nunca causa um erro e é o padrão.

A palavra-chave de herança e o argumento correspondente para #pragma pointers_to_members é virtual_inheritance.

Essa opção exige um ponteiro maior e mais código para interpretar o ponteiro do que as outras opções.

Comentários

No Visual Studio 2019 e versões anteriores, a Microsoft usa diferentes representações (de diferentes tamanhos) para tipos de ponteiro para membro. Ponteiros para membros de classes que não possuem herança ou herança simples têm a menor representação. Ponteiros para membros de classes que possuem herança múltipla são maiores. Ponteiros para membros de classes que possuem herança virtual são os maiores. Quando nenhum modelo de representação for especificado para o compilador, o padrão será usar a representação maior e mais geral.

Quando você especificar uma dessas opções de modelo de herança, esse modelo será usado para todos os ponteiros para membros de classe, independentemente do tipo de herança ou se você declarar o ponteiro antes ou depois da classe. Se sempre usar classes de herança única, poderá reduzir o tamanho do código compilando com /vms. No entanto, se você quiser usar o caso mais geral (em detrimento da maior representação de dados), compile com /vmv.

Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.

  2. Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.

  3. Digite a opção do compilador na caixa Opções Adicionais.

Para definir essa opção do compilador via programação

Confira também

/vmb, /vmg (Método de representação)
Opções do compilador MSVC
Sintaxe de linha de comando do compilador MSVC