我无法在我的代码中找到并修复警告

时间:2016-04-24 20:57:58

标签: winforms c++-cli data-loss

void CNodo::DrawWithAnArrow(System::Drawing::Graphics^g, CNodo nd){
     g->DrawRectangle(System::Drawing::Pens::Black, posx, posy, lado, lado);
     System::String ^cadena = contenido.ToString();
     System::Drawing::Font ^f = gcnew System::Drawing::Font("Arial", 10);
     g->DrawString(cadena, f, System::Drawing::Brushes::Black, posx +  static_cast<int>(lado / 4), posy + static_cast<int>(lado / 5)); // warning is in this line
     g->DrawLine(System::Drawing::Pens::Black, posx + lado, posy + (lado / 2), nd.getX(), nd.getY() + (lado / 2));
}

在这个论坛上向大家致以问候。

因此。我收到编译器发出的警告,指出可能存在数据丢失,因为存在从int到float的转换。

我感到困惑,因为我的代码中的所有变量都是整数(posx,posy和lado),其中“lado”等于20。

我甚至使用static_cast来阻止警告,但它仍然存在。

如果有人能帮我解决这个问题,我会非常感激

1 个答案:

答案 0 :(得分:0)

Graphics.DrawString方法为x和y参数采用两个浮点值。试试这个:

static_cast<float>(posx + (lado / 4))

请注意,lado/4表达式可能会导致精度损失。