C3535 błąd kompilatora
nie można wywnioskowanie typu "type1' od"type2"
Typ zmiennej zadeklarowanej przez auto słowa kluczowego, nie można wywnioskować z typu wyrażenia inicjalizacji.Na przykład, ten błąd występuje, jeśli wyrażenie inicjowania do void, który nie jest typem.
Aby poprawić ten błąd
Zapewnienia, że typu wyrażenia inicjalizacji nie jest void.
Upewnij się, że deklaracja nie jest wskaźnik do typów podstawowych.Aby uzyskać więcej informacji, zobacz Podstawowe typy (C++).
Zapewnienia, że jeśli deklaracja jest wskaźnik do typu, wyrażenie inicjowania jest typ wskaźnika.
Przykład
Poniższy przykład daje C3535, ponieważ inicjowanie wyrażenie ma void.
// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
auto x = f(); //C3535
return 0;
}
Poniższy przykład daje C3535, ponieważ instrukcja deklaruje zmienną x jako wskaźnik wyprowadzonych typu, ale typ inicjator wyrażenie jest podwójny.W konsekwencji kompilator nie wywnioskowanie typu zmiennej.
// C3535b.cpp
// Compile with /Zc:auto
int main()
{
auto* x = 123.0; // C3535
return 0;
}
Poniższy przykład daje C3535, ponieważ zmienna p deklaruje wskaźnik wyprowadzonych typu, ale wyrażenie inicjalizacji nie jest typu wskaźnika.
// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x; // C3535