Sdílet prostřednictvím


Chyba kompilátoru C3535

Nelze zjistit typ "typ1" z "typ2"

Typ proměnné deklarované pomocí auto klíčové slovo nemůže být odvozen z inicializace výrazu typu.Například tato chyba nastane, pokud je vyhodnocen inicializační výraz void, který není typu.

Oprava této chyby

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

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

  3. Zajistěte, aby v případě, že prohlášení je ukazatel na typ, inicializační výraz typ ukazatele.

Příklad

Následující příklad vrací C3535, protože inicializační 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 vrací C3535, protože příkaz deklaruje proměnnou x jako ukazatel na deduced typu, ale typ inicializátor výraz je dvojitá.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 vrací C3535, protože proměnná p ukazatel na deduced typ deklaruje, ale výraz inicializace není typ ukazatele.

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

Viz také

Referenční dokumentace

auto – klíčové slovo

Základní typy (C++)