如何摆脱C++中的强制转换?

Jar*_*red 2 c++ casting

在C++中,你可以使用几种方式,C风格的转换或C++转换.Bjarne Stroustrup和许多其他C++专家说,一个好的设计应该没有铸造.

你可以帮我在这里重新设计下面的代码来摆脱演员阵容吗?

void CProgressBar::SetPosition( int nPos );  //unable to change

void CSaveDialog::UpdatePosition( double dProgress )
{
   double percentOfProgress = dProgress * 100;
   m_pProgressBar->SetPosition( static_cast<int>( percentOfProgress ) );
}
Run Code Online (Sandbox Code Playgroud)

我可以修改UpdatePosition,但不能修改SetPosition.

pau*_*doo 5

我认为在算术中投射可以.应该真正避免的转换类型是在您自己的类层次结构中上下(或跨越).

另外,对于像这样的算术运算,你可能想要更加小心.你应该在施法之前ceilfloor之前申请int.我不确定它是否完全决定了转换为int的方式.(即朝+ inf,朝-inf或朝零)