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' fromfloat への変換'

手がかりは、floatを考慮して計算し、int値を返すことです。(したがって、ダメージ計算は正確ですが、ゲーム クライアントのダメージ表示はダメージの整数表現を返します)。

私の知る限り、この警告は私が聞きたいことを伝えているだけです。しかし、どうすればこの警告を取り除くことができますか? (コンパイラに警告を無視するように指示する以外に、私はそれを望んでいません)。

4

1 に答える 1

2

ceilの戻り値をintに変換しています。次に、その結​​果をフロートで除算します。あなたが今持っているもの、あなたが返す値は、フロートです。次に、コンパイルはそれをintに変換する必要があります。コンパイラが文句を言うのは後者の変換です。

型キャストを置き忘れたと思います。

スタイルの問題として、古いCスタイルのキャストの代わりにC++キャストを使用することをお勧めします。

于 2012-11-23T04:19:34.887 に答える