1

我已经掌握了一些 C++ 游戏源,我对 C++ 还很陌生,并且我已经成功编译了源并且它似乎工作正常,但是有一些我无法解决的烦人的警告。

我的 C++ 编程技能非常基础,我对这些模板变量的东西有很大的问题。尤其是这个名为 int32_t 的模块化模板,它似乎在我的源代码中几乎无处不在。

我在 int32_t 上阅读的文档对新手并不友好,它们非常正式,对于那些不知道如何使用它的人来说真的很难理解。(嗯,我觉得我实际上可能看错了地方)。

重点:

这是我遇到问题的功能:

int32_t Weapons::getMaxMeleeWeaponDamage(int32_t attackSkill, int32_t attackValue, float attackFactor)
{
    return ((int32_t)std::ceil(((attackValue * 0.05) * attackSkill) + (attackValue)) / attackFactor);
}

给出的警告:

170 C:\compiling\GameSources\weapons.cpp [警告] 转换为int32_t' from浮点数'

线索是,我确实希望它在计算时考虑到浮点数,并返回一个 int 值。(所以伤害计算是准确的,但是游戏客户端上的伤害显示返回的是伤害的整数表示)。

据我所知,这个警告只是告诉我我想听什么。但是我怎样才能摆脱这个警告呢?(除了告诉我的编译器忽略警告之外,我不希望这样)。

4

1 回答 1

2

您正在将 ceil 的返回值转换为 int。然后你将结果除以一个浮点数。你现在拥有的,你返回的值,是一个浮点数。然后编译必须将其转换为 int。这是编译器抱怨的后一种转换。

我会说你放错了类型转换。

作为样式问题,我建议您使用 C++ 转换而不是旧的 C 样式转换。

于 2012-11-23T04:19:34.887 回答