Delen via


Compilerfout C3535

kan het type voor 'type1' niet afleiden van 'type2'

Opmerkingen

Het type variabele dat door het auto trefwoord is gedeclareerd, kan niet worden afgeleid van het type initialisatie-expressie. Deze fout treedt bijvoorbeeld op als de initialisatie-expressie resulteert in void, wat geen type is.

Deze fout corrigeren

  1. Zorg ervoor dat het type initialisatie-expressie niet voidis.

  2. Zorg ervoor dat de declaratie geen verwijzing naar een fundamenteel type is. Zie Basistypen voor meer informatie.

  3. Zorg ervoor dat als de declaratie een aanwijzer naar een type is, de initialisatie-expressie een aanwijzertype is.

Voorbeelden

In het volgende voorbeeld wordt C3535 weergegeven omdat de initialisatie-expressie resulteert in void.

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

In het volgende voorbeeld wordt C3535 weergegeven omdat de instructie een variabele x declareert als een aanwijzer naar een afgeleid type, maar het type initializer-expressie is dubbel. Daarom kan de compiler het type van de variabele niet afleiden.

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

In het volgende voorbeeld wordt C3535 weergegeven omdat een variabele p een aanwijzer declareert naar een afgeleid type, maar de initialisatie-expressie is geen aanwijzertype.

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

Zie ook

automatisch trefwoord
Basistypen