Partilhar via


Erro de Compilador C3535

não é possível deduzir o tipo de 'Type '1. a partir de 'Tipo2'

O tipo da variável declarada com o auto palavra-chave não pode ser deduzido a partir do tipo da expressão de inicialização. Por exemplo, este erro ocorre se avalia a expressão de inicialização void, que não é um tipo.

Para corrigir este erro

  1. Verifique se o tipo da expressão de inicialização não está void.

  2. Certifique-se de que a declaração não é um ponteiro para um tipo fundamental. Para obter mais informações, consulte Fundamental Types.

  3. Certifique-se de que, se a declaração é um ponteiro para um tipo, a expressão de inicialização é um tipo de ponteiro.

Exemplo

O exemplo a seguir gera C3535 porque avalia a expressão de inicialização void.

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

O exemplo a seguir gera C3535 porque a instrução declara a variável x como um ponteiro para um tipo deduzido, mas o tipo do inicializador de expressão é duplo. Conseqüentemente, o compilador não é possível deduzir o tipo da variável.

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

O exemplo a seguir gera C3535 porque variável p declara um ponteiro para um tipo deduzido, mas a expressão de inicialização não é um ponteiro tipo.

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

Consulte também

Referência

auto Keyword

Fundamental Types