Compilerfehler C3535
Der Typ für "type1" kann nicht aus "type2" abgeleitet werden
Der Typ der vom auto-Schlüsselwort deklarierten Variablen kann nicht aus dem Typ des Initialisierungsausdrucks abgeleitet werden. Dieser Fehler tritt z. B. auf, wenn der Initialisierungsausdruck void ergibt, wobei es sich nicht um einen Typ handelt.
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 (C++).
Wenn die Deklaration ein Zeiger auf einen Typ ist, stellen Sie sicher, dass der Initialisierungsausdruck ein Zeigertyp ist.
Beispiel
Im folgenden Beispiel wird C3535 erzeugt, da der Initialisierungsausdruck void ergibt.
// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
auto x = f(); //C3535
return 0;
}
Im folgenden Beispiel wird C3535 erzeugt, da die Anweisung die Variable x als Zeiger auf einen abgeleiteten Typ deklariert, der Initialisiererausdruck aber den Typ double aufweist. Infolgedessen 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 erzeugt, da die Variable p einen Zeiger auf einen abgeleiteten Typ deklariert, der Initialisierungsausdruck aber kein Zeigertyp ist.
// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x; // C3535