Udostępnij przez


Ostrzeżenie kompilatora (poziom 1) C4305

"konwersja": obcięcie z "type1" do "type2"

Uwagi

To ostrzeżenie jest wyświetlane, gdy wartość jest konwertowana na mniejszy typ w inicjalizacji lub jako argument konstruktora, co powoduje utratę informacji.

Przykład

W tym przykładzie przedstawiono dwa sposoby wyświetlenia tego ostrzeżenia:

// 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);
}

Aby rozwiązać ten problem, zainicjuj przy użyciu wartości poprawnego typu lub użyj jawnego rzutowania do poprawnego typu. Na przykład użyj float literału, takiego jak 2.71828f zamiast double (domyślny typ literałów zmiennoprzecinkowych), aby zainicjować zmienną float lub przekazać do konstruktora, który przyjmuje float argument.