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.