Megosztás a következőn keresztül:


C3535-ös fordítási hiba

A "type1" típus nem vonható le a "type2" típusból

Megjegyzések

A kulcsszó által auto deklarált változó típusa nem vonható le az inicializálási kifejezés típusából. Ez a hiba például akkor fordul elő, ha az inicializálási kifejezés értéke void, ami nem típus.

A hiba kijavítása

  1. Győződjön meg arról, hogy az inicializálási kifejezés típusa nem void.

  2. Győződjön meg arról, hogy a deklaráció nem alapvető típusra mutat. További információ: Alapvető típusok.

  3. Győződjön meg arról, hogy ha a deklaráció egy típusra mutató mutató, akkor az inicializálási kifejezés egy mutatótípus.

Példák

Az alábbi példa c3535 értéket ad vissza, mert az inicializálási kifejezés kiértékelése a következő: void.

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

Az alábbi példa c3535 értéket ad vissza, mivel az utasítás a változót x mutatóként deklarálja egy deklarált típusra, de az inicializáló kifejezés típusa dupla. Ezért a fordító nem tudja levezetni a változó típusát.

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

Az alábbi példa c3535 értéket ad vissza, mivel a változó p egy mutatót deklarál egy deklarált típusra, de az inicializálási kifejezés nem mutatótípus.

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

Lásd még

automatikus kulcsszó
Alapvető típusok