Avviso del compilatore (livello 1) C4305
'conversion': troncamento da 'type1' a 'type2'
Osservazioni:
Questo avviso viene generato quando un valore viene convertito in un tipo più piccolo in un'inizializzazione o come argomento del costruttore, con conseguente perdita di informazioni.
Esempio
Questo esempio illustra due modi per visualizzare questo avviso:
// 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);
}
Per risolvere questo problema, inizializzare usando un valore del tipo corretto o usare un cast esplicito al tipo corretto. Ad esempio, usare un float
valore letterale, ad esempio 2.71828f anziché un double
(tipo predefinito per i valori letterali a virgola mobile) per inizializzare una float
variabile o passare a un costruttore che accetta un float
argomento.