Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
conversie van 'type_1' naar 'type_2' vereist een smalle conversie
Opmerkingen
Er is een impliciete narrowing-conversie gevonden bij het gebruik van uniforme initialisatie.
De C-taal maakt impliciete vermalingsconversies in toewijzingen en initialisatie mogelijk, en C++ volgt een passend voorbeeld, ook al is onverwacht beperken een oorzaak van veel codefouten. Om code veiliger te maken, vereist de C++-standaard een diagnostisch bericht wanneer er een beperkte conversie plaatsvindt in een initialisatielijst. In Visual C++is de diagnose compilerfout C2397 bij het gebruik van de uniforme initialisatiesyntaxis die vanaf Visual Studio 2015 wordt ondersteund. De compiler genereert compilerwaarschuwing (niveau 1) C4838 wanneer u de syntaxis van de lijst of aggregaties van initialisatie gebruikt die wordt ondersteund door Visual Studio 2013.
Een vermalingsconversie kan in orde zijn wanneer u weet dat het mogelijke bereik van geconverteerde waarden in het doel past. In dit geval weet u meer dan de compiler doet. Als u opzettelijk een vermalingsconversie maakt, moet u uw intenties expliciet maken met behulp van een statische cast. Anders geeft dit foutbericht bijna altijd aan dat u een fout in uw code hebt. U kunt dit oplossen door ervoor te zorgen dat de objecten die u initialiseert, typen hebben die groot genoeg zijn om de invoer te verwerken.
Example
In het volgende voorbeeld wordt C2397 gegenereerd:
// C2397.cpp
// compile with: /c
struct S {
int m1;
double m2, m3;
};
void func(double d1) {
char c1 { 127 }; // OK
char c2 { 513 }; // C2397
S arr[2]{};
arr[0] = { d1, 2.0, 3.0 }; // C2397
arr[1] = { static_cast<int>(d1), 2.0, 3.0 }; // OK
}