Resolución de ambigüedad
Para realizar conversiones explícitas a partir de un tipo a otro, debe utilizar las conversiones, especificando el nombre de tipo deseado.Resultado de algunas conversiones de tipos en ambigüedad sintáctica.La conversión de tipo siguiente de estilo de función es ambigua:
char *aName( String( s ) );
No está claro si es una declaración de función o una declaración de objeto con una conversión de estilo de función como el inicializador: Puede declarar una función que devolvía char * tipo que toma un argumento de Stringtipo, o puede declarar el objeto aName e inicialícela con el valor de la conversión de s para escribir String.
Si una declaración puede considerarse una declaración de función válida, se trata como tal.Sólo si no puede posiblemente ser una declaración de función (es decir, si sería incorrecta — es una instrucción examinada para ver si es una conversión de tipo de estilo de función.Por consiguiente, el compilador interpreta la instrucción ser una declaración de una función y omite los paréntesis alrededor del identificador s.por otra parte, las instrucciones:
char *aName( (String)s );
y
char *aName = String( s );
están claramente las declaraciones de objetos, y una conversión definida por el usuario de String escrito para escribir char * se invoca para realizar la inicialización de aName.