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 void
ausgewertet wird, der kein Typ ist.
So beheben Sie diesen Fehler
Stellen Sie sicher, dass der Typ des Initialisierungsausdrucks nicht
void
ist.Stellen Sie sicher, dass die Deklaration kein Zeiger auf einen grundlegenden Typ ist. Weitere Informationen finden Sie unter "Grundlegende Typen".
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 void
wird.
// 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