Błąd kompilatora C3535
Nie można wywnioskować typu dla "type1' od"type2"
Typ zmiennej zadeklarowanej przez auto słów kluczowych może być wyprowadzony z rodzaju wyrażenie inicjowania.Na przykład, ten błąd występuje podczas inicjowania wyrażenie ma void, który nie jest typem.
Aby poprawić ten błąd
Zapewnienia, że typ wyrażenia inicjowania nie jest void.
Upewnij się, że deklaracja nie jest wskaźnik do typów podstawowych.Aby uzyskać dodatkowe informacje, zobacz Typy podstawowe (C++).
Upewnij się, że jeśli deklaracja jest wskaźnik do typu, wyrażenie inicjowania jest typ wskaźnika.
Przykład
Poniższy przykład zwraca 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 zwraca C3535, ponieważ instrukcja deklaruje zmienną x jako wskaźnik do wyprowadzonych typu, ale typ inicjator wyrażenie jest podwójny.W związku z tym kompilator nie można wywnioskować, typ zmiennej.
// C3535b.cpp
// Compile with /Zc:auto
int main()
{
auto* x = 123.0; // C3535
return 0;
}
Poniższy przykład zwraca C3535, ponieważ zmienna p deklaruje kursor do typu wyprowadzonych, ale wyrażenie inicjowania nie jest typ wskaźnika.
// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x; // C3535