私のC++プログラムには次のクラスがあります。
- game_entity
- game_entityから継承するgame_creature
game_entity、game_creature、またはその他の下位クラスから継承するクラスをさらに増やす予定です。
また、game_entityインスタンスとgame_creatureインスタンスの両方を含むgame_entity型の配列もあります。今私の問題はこれです:それが関数に渡されるときに配列をループしようとしますが、それがgame_creatureオブジェクトに到達するとき、それは添え字形式を使用してポインターを十分にインクリメントしません。
例えば:
最初のオブジェクトがgame_creature(game_entityよりも多くのフィールドを持つ)の場合、最初の3つのフィールド(game_creatureでもgame_entityと同じ)に問題なくarray[1]
アクセスできますが、アクセスすると、の値にアクセスします。 2番目のgame_creatureオブジェクトの最初の2つのintとして、最初のgame_creatureの2番目の2つのint。
これは、x = 1、y = 2、sprite * = Something、movespeed = 5、health = 25のgame_creatureがある場合、2番目のgame_creatureオブジェクトのxとyに5と25としてアクセスすることを意味します。実際には、最初のgame_creatureのmovespeedとhealthです。
これは、「game_entity」のxとyに対してポインタが指しているメモリが、実際には「game_creature」の移動速度と正常性がある場所にあるためだと思います。ただし、game_entitiesの配列を作成する方法がわからないため、ゲームのグリッド上にある任意のタイプのオブジェクトを保持できますが、適切なフィールドにアクセスし、毎回ポインターを十分にインクリメントします。
どんな助けでも大歓迎です。