Compartir vía


Error del compilador C3535

no se puede deducir el tipo para 'type1' de 'type2'

El tipo de la variable declarada por la palabra clave auto no se puede deducir del tipo de la expresión de inicialización. Por ejemplo, este error se produce si la expresión de inicialización se evalúa como void, que no es un tipo.

Para corregir este error

  1. Asegúrese de que el tipo de la expresión de inicialización no es void.

  2. Asegúrese de que la declaración no es un puntero a un tipo fundamental. Para más información, consulte Tipos fundamentales.

  3. Asegúrese de que si la declaración es un puntero a un tipo, la expresión de inicialización es un tipo de puntero.

Ejemplos

En el ejemplo siguiente, se genera el error C3535 porque la expresión de inicialización se evalúa como void.

// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
   auto x = f();   //C3535
   return 0;
}

En el ejemplo siguiente, se genera el error C3535 porque la instrucción declara la variable x como un puntero a un tipo deducido, pero el tipo de la expresión de inicializador es doble. Por lo tanto, el compilador no puede deducir el tipo de la variable.

// C3535b.cpp
// Compile with /Zc:auto
int main()
{
   auto* x = 123.0;   // C3535
   return 0;
}

En el ejemplo siguiente, se genera el error C3535 porque la variable p declara un puntero a un tipo deducido, pero la expresión de inicialización no es un tipo de puntero.

// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x;  // C3535

Consulte también

Auto (palabra clave)
Tipos fundamentales