Sdílet prostřednictvím


C3535 chyba kompilátoru

Nelze zjistit typ "typ1" z "typ2."

Typ proměnné deklarované pomocí auto klíčové slovo nemůže být odvozeno z typu výrazu inicializace.Například k této chybě dochází, pokud inicializaci výraz vyhodnocen jako void, který není typu.

Chcete-li opravit tuto chybu

  1. Zajištění typ inicializace výrazu není void.

  2. Zajistěte prohlášení není základní typ ukazatele.Další informace naleznete v tématu Základní typy (C++).

  3. Zajistěte, aby ukazatel na typ prohlášení se inicializace výraz typ ukazatele.

Příklad

Následující příklad dává C3535, protože inicializace výraz vyhodnocen jako void.

// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
   auto x = f();   //C3535
   return 0;
}

Následující příklad dává C3535, protože příkaz deklaruje proměnnou x výraz je jako ukazatel na deduced typu, ale inicializátor typ double.V důsledku toho kompilátor nelze odvodit typ proměnné.

// C3535b.cpp
// Compile with /Zc:auto
int main()
{
   auto* x = 123.0;   // C3535
   return 0;
}

Následující příklad dává C3535, protože proměnná p prohlašuje ukazatel na deduced typu, ale inicializace výraz není typ ukazatele.

// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x;  // C3535

Viz také

Referenční dokumentace

Klíčové slovo auto

Základní typy (C++)