Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
não é possível deduzir o tipo para 'tipo1' de 'tipo2'
Observações
O tipo da variável declarada pela auto palavra-chave não pode ser deduzido do tipo da expressão de inicialização. Por exemplo, esse erro ocorre se a expressão de inicialização for avaliada como void, que não é um tipo.
Para corrigir este erro
Certifique-se de que o tipo da expressão de inicialização não é
void.Certifique-se de que a declaração não é um ponteiro para um tipo fundamental. Para obter mais informações, consulte Tipos fundamentais.
Certifique-se de que, se a declaração for um ponteiro para um tipo, a expressão de inicialização será um tipo de ponteiro.
Examples
O exemplo a seguir produz C3535 porque a expressão de inicialização é avaliada como void.
// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
auto x = f(); //C3535
return 0;
}
O exemplo a seguir produz C3535 porque a instrução declara variável x como um ponteiro para um tipo deduzido, mas o tipo da expressão do inicializador é duplo. Consequentemente, o compilador não pode 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 produz C3535 porque a variável p declara um ponteiro para um tipo deduzido, mas a expressão de inicialização não é um tipo de ponteiro.
// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x; // C3535