gpt4 book ai didi

c++ - 我怎样才能摆脱 C++ 中的强制转换?

转载 作者:太空狗 更新时间:2023-10-29 23:38:27 24 4
gpt4 key购买 nike

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

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

最佳答案

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

此外,对于这样的算术转换,您可能需要更加小心。在转换为 int 之前,您可能应该应用 ceilfloor。我不确定它是否完全确定了转换为 int 的方式。 (即朝向 +inf、朝向-inf 或朝向零)

关于c++ - 我怎样才能摆脱 C++ 中的强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1043761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com