Compartilhar via


Resolução de ambigüidade

Para realizar conversões explícitas de um tipo para outro, você deve usar casts, especificando o nome do tipo desejado.Algumas projeções resultado digite ambigüidade sintática.A seguinte projeção do tipo de estilo de função é ambígua:

char *aName( String( s ) );

Ele não está claro se ela é uma declaração de função ou uma declaração com um estilo de função escolhidos como o inicializador de objeto: ele poderia declarar uma função de retorno de tipo char * que leva um argumento do tipo String, ou ela poderia declarar o objeto aName e inicializá-lo com o valor da s cast digitar String.

Se uma declaração pode ser considerada uma declaração de função válida, ele será tratado como tal.Somente se ele possivelmente não pode ser uma declaração de função — ou seja, se seria sintaticamente incorreto — é uma instrução é examinada para ver se ela é a conversão de um tipo de estilo de função.Portanto, o compilador considera a instrução a ser uma declaração de uma função e ignora os parênteses o identificador s.Por outro lado, as instruções:

char *aName( (String)s );

e

char *aName = String( s );

são claramente declarações de objetos e uma conversão definida pelo usuário do tipo de String digitar char * é invocado para executar a inicialização de aName.

Consulte também

Referência

Resumo de C++ declaradores