Udostępnij za pośrednictwem


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

  1. Zapewnienia, że typ wyrażenia inicjowania nie jest void.

  2. Upewnij się, że deklaracja nie jest wskaźnik do typów podstawowych.Aby uzyskać dodatkowe informacje, zobacz Typy podstawowe (C++).

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

Zobacz też

Informacje

auto — słowo kluczowe

Typy podstawowe (C++)