Condividi tramite


Errore del compilatore C3535

impossibile dedurre il tipo per 'type1' da 'type2'

Il tipo della variabile dichiarata dalla auto parola chiave non può essere dedotto dal tipo dell'espressione di inizializzazione. Ad esempio, questo errore si verifica se l'espressione di inizializzazione restituisce void, che non è un tipo.

Per correggere l'errore

  1. Verificare che il tipo dell'espressione di inizializzazione non voidsia .

  2. Assicurarsi che la dichiarazione non sia un puntatore a un tipo fondamentale. Per altre informazioni, vedere Tipi fondamentali.

  3. Assicurarsi che se la dichiarazione è un puntatore a un tipo, l'espressione di inizializzazione è un tipo di puntatore.

Esempi

L'esempio seguente restituisce C3535 perché l'espressione di inizializzazione restituisce void.

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

L'esempio seguente restituisce C3535 perché l'istruzione dichiara la variabile come puntatore x a un tipo dedotto, ma il tipo dell'espressione di inizializzatore è double. Di conseguenza, il compilatore non può dedurre il tipo della variabile.

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

L'esempio seguente restituisce C3535 perché la variabile dichiara un puntatore p a un tipo dedotto, ma l'espressione di inizializzazione non è un tipo puntatore.

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

Vedi anche

Auto (parola chiave)
Tipi fondamentali