Freigeben über


Compilerfehler C3535

Typ für 'type1' kann nicht von 'type2' abgeleitet werden.

Der Typ der variablen, die auto vom Schlüsselwort (keyword) deklariert wird, kann nicht vom Typ des Initialisierungsausdrucks abgeleitet werden. Dieser Fehler tritt beispielsweise auf, wenn der Initialisierungsausdruck voidausgewertet wird, der kein Typ ist.

So beheben Sie diesen Fehler

  1. Stellen Sie sicher, dass der Typ des Initialisierungsausdrucks nicht voidist.

  2. Stellen Sie sicher, dass die Deklaration kein Zeiger auf einen grundlegenden Typ ist. Weitere Informationen finden Sie unter "Grundlegende Typen".

  3. Stellen Sie sicher, dass der Initialisierungsausdruck ein Zeigertyp ist, wenn es sich bei der Deklaration um einen Zeigertyp handelt.

Beispiele

Das folgende Beispiel liefert C3535, da der Initialisierungsausdruck ausgewertet voidwird.

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

Im folgenden Beispiel wird C3535 zurückgegeben, da die Anweisung Variable x als Zeiger auf einen abgeleiteten Typ deklariert, der Typ des Initialisierungsausdrucks jedoch doppelt ist. Folglich kann der Compiler den Typ der Variablen nicht ableiten.

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

Im folgenden Beispiel wird C3535 zurückgegeben, da die Variable p einen Zeiger auf einen abgeleiteten Typ deklariert, der Initialisierungsausdruck jedoch kein Zeigertyp ist.

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

Siehe auch

Auto-Schlüsselwort
Grundlegende Typen