コンパイラの警告 (レベル 1) C4305
'conversion': 'type1' から 'type2' へ切り詰めます
解説
この警告は、初期化時またはコンストラクター引数として値が小さい型に変換され、情報が失われた場合に発生します。
例
このサンプルは、この警告が表示される可能性のある 2 つの方法を示しています。
// 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);
}
この問題を解決するには、正しい型の値を使用して初期化するか、正しい型への明示的なキャストを使用します。 たとえば、double
(浮動小数点リテラルの既定の型) ではなく、2.71828f などの float
リテラルを使用して、float
変数を初期化したり、float
引数を取るコンストラクターに渡したりします。