Avertissement du compilateur (niveau 1) C4305
'context' : troncation de 'type1' à 'type2'
Notes
Cet avertissement est émis lorsqu’une valeur est convertie en type plus petit dans une initialisation ou en tant qu’argument de constructeur, ce qui entraîne une perte d’informations.
Exemple
Cet exemple montre deux façons de voir cet avertissement :
// C4305.cpp
// Compile by using: cl /EHsc /W4 C4305.cpp
struct item
{
item(float) {}
};
int main()
{
float f = 2.71828; // C4305 'initializing'
item i(3.14159); // C4305 'argument'
return static_cast<int>(f);
}
Pour résoudre ce problème, initialisez à l’aide d’une valeur du type correct ou utilisez un cast explicite vers le type correct. Par exemple, utilisez un float
littéral tel que 2.71828f au lieu d’un double
(type par défaut pour les littéraux à virgule flottante) pour initialiser une float
variable ou pour passer à un constructeur qui accepte un float
argument.