Udostępnij za pośrednictwem


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

  1. Zapewnienia, że typu wyrażenia inicjalizacji nie jest void.

  2. Upewnij się, że deklaracja nie jest wskaźnik do typów podstawowych.Aby uzyskać więcej informacji, zobacz Podstawowe typy (C++).

  3. 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

Zobacz też

Informacje

Auto słowo kluczowe

Podstawowe typy (C++)