Sdílet prostřednictvím


Chyba kompilátoru C3535

Aplikace nemůže odvodit typ 'type1' z 'type2'

Typ proměnné deklarované klíčovým slovem auto nelze odvodit z typu inicializačního výrazu. K této chybě dochází například v případě, že se výraz inicializace vyhodnotí jako void, což není typ.

Oprava této chyby

  1. Ujistěte se, že typ inicializačního výrazu není void.

  2. Ujistěte se, že deklarace není ukazatelem na základní typ. Další informace naleznete v tématu Základní typy.

  3. Ujistěte se, že pokud je deklarace ukazatelem na typ, inicializační výraz je typ ukazatele.

Příklady

Následující příklad přináší C3535, protože inicializační výraz je 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 jako ukazatel na vyvolaný typ, ale typ výrazu inicializátoru je dvojitý. Kompilátor proto nemůže odvodit typ proměnné.

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

Následující příklad přináší C3535, protože proměnná p deklaruje ukazatel na vyvolaný typ, ale inicializační výraz není typ ukazatele.

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

Viz také

Auto – klíčové slovo
Základní typy