/vmm, /vms , /vmv (representação 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.

Syntax

/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 várias heranças.

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

Essa representação é maior do que a necessária para uma 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 uma que usa uma herança ou herança única. A palavra-chave de herança correspondente e o argumento 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 a herança virtual. Essa representação de ponteiro nunca causa um erro e é o padrão.

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

Essa opção requer 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 representações diferentes (de tamanhos diferentes) para tipos de ponteiro para membro. Ponteiros para membros de classes que não têm herança ou herança única têm a menor representação. Ponteiros para membros de classes que têm várias heranças são maiores. Ponteiros para membros de classes que têm herança virtual são o maior. Quando nenhum modelo de representação é especificado para o compilador, o padrão é usar a representação maior e mais geral.

Quando você especifica uma dessas opções de modelo de herança, esse modelo é usado para todos os ponteiros para membros de classe, independentemente de seu tipo de herança ou se você declarar o ponteiro antes ou depois da classe. Se você 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 (às custas 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 propriedade delinha de comandoC/C++>Propriedades> de configuração.

  3. Insira a opção do compilador na caixa Opções adicionais .

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

Consulte também

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