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
Ujistěte se, že typ inicializačního výrazu není
void
.Ujistěte se, že deklarace není ukazatelem na základní typ. Další informace naleznete v tématu Základní typy.
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é
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro