Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Typ für „type1“ kann nicht von „type2“ abgeleitet werden
Bemerkungen
Der Typ der variablen, die auto vom Schlüsselwort 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
Stellen Sie sicher, dass der Typ des Initialisierungsausdrucks nicht
voidist.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 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