C++ 怪物阵列没有按我需要的方式工作

C++ 怪物阵列没有按我需要的方式工作,c++,C++,我的问题是,我想每次 Player 创建,用于添加分配给该玩家的怪物类的10个实例 到目前为止我的工作 MAIN.CPP//允许用户添加播放器 if (myMenuChoice == 1) // add a player { if (numberOfPlayers>4) { cout<<"Max of 5 players!"<<endl; }else{

我的问题是,我想每次

Player
创建,用于添加分配给该玩家的怪物类的10个实例

到目前为止我的工作

MAIN.CPP//允许用户添加播放器

if (myMenuChoice == 1) // add a player
      {
          if (numberOfPlayers>4)
          { 
              cout<<"Max of 5 players!"<<endl;
          }else{
              player[(numberOfPlayers)].addPlayer((numberOfPlayers));//create player class  
              numberOfPlayers++;

}
我选择了玩家2怪物

5
按照这个顺序,当我为玩家1列出怪物时,我得到

5
4
2
似乎它只是制造了一个我的怪物[10],而不是每个类,我如何解决这个问题

不确定你是否需要我如何添加怪物或查看它们,但在这里

总而言之

player[x].addMonster(monsterSelection);//add monster to this player class
player.cpp

void Player::addMonster(int monstername)
{
    int x=0;  //first monster
    if(this->numberOfMonsters >0)//do they have monsters all ready?
        x=this->numberOfMonsters;
    else
        this->numberOfMonsters = x;
    if (x<10)   
    {
        myMonsters[x].getNewMonster(monstername);
        this->numberOfMonsters++;
        cout<<"current number of monsters is: "<<numberOfMonsters;
    }
    else
        cout<<"sorry no more monsters for you!! 10 max"<<endl;
}
void Player::listMyMonsters()
{
    int x;
    x = this->numberOfMonsters;
    cout<<"Total number of monsters: "<<numberOfMonsters<<endl;
    int monsterCount=0;
    while(x!=0)
    {   
        cout<<"Monster ";
        cout<< monsterCount ;
        cout<<":\t";
        cout<<myMonsters[monsterCount].name;
        monsterCount++;
        cout<<"\n";
        x--;
    }
}
在player.cpp中

void Player::addMonster(int monstername)
{
    int x=0;  //first monster
    if(this->numberOfMonsters >0)//do they have monsters all ready?
        x=this->numberOfMonsters;
    else
        this->numberOfMonsters = x;
    if (x<10)   
    {
        myMonsters[x].getNewMonster(monstername);
        this->numberOfMonsters++;
        cout<<"current number of monsters is: "<<numberOfMonsters;
    }
    else
        cout<<"sorry no more monsters for you!! 10 max"<<endl;
}
void Player::listMyMonsters()
{
    int x;
    x = this->numberOfMonsters;
    cout<<"Total number of monsters: "<<numberOfMonsters<<endl;
    int monsterCount=0;
    while(x!=0)
    {   
        cout<<"Monster ";
        cout<< monsterCount ;
        cout<<":\t";
        cout<<myMonsters[monsterCount].name;
        monsterCount++;
        cout<<"\n";
        x--;
    }
}
player.h

    enum Race {none,Living, Dead, Nature};
class Player
{
    public:
     Player();
    ~Player(){}


    int numberOfMonsters;
    int karma;
    bool myTurn;
    Race myRace;
    Monster myMonsters[10]; //up to ten monsters on a team


    void addPlayer(int x);
    void addMonster(int monstername);
    void listMyMonsters();
    Race getRace() const { return myRace; }


};

正如@Patashu所指出的,你声明了
怪物我的怪物[10]
类播放器
的声明之外,因此它不是每个实例的变量,它在整个程序中只存在一次

这是使
Monster
成为
Player
的成员变量的方法。下面的代码将编译。添加您需要的任何其他语句,添加到代码中

//Player.h

#ifndef PLAYER
#define PLAYER
#include "Monster.h"
class Player
{
      Monster M[10];
};
#endif
//怪物

#ifndef MONSTER
#define MONSTER

class Monster
{

};

#endif
//Main.h

#ifndef MAIN
#define MAIN

#include "Player.h"
#include "Monster.h"

#endif
//main.cpp

#include "Main.h"

int main()
{
    Player P;
    return 0;
}

你宣布怪物为我的怪物[10];在类Player的声明之外,所以它不是一个每个实例的变量,它在整个程序中只存在一次。当我把它放在类中时,我会得到很多错误。我可以展示它是否有助于解决这个问题?发布错误消息。(顺便说一句,为什么不使用怪物向量而不是怪物数组?使用向量通常可以简化逻辑和复杂性。)您正在尝试在爬行之前进行手翻。尝试创建一个
怪物
类,以及一个
玩家
类和一个
怪物
成员。在那之前,没有其他东西能完美地工作。很好,我不知道上次为什么不工作。因为我唯一缺少的是“如果球员”定义球员,我想我的融入方式是一团糟。。。
#ifndef MAIN
#define MAIN

#include "Player.h"
#include "Monster.h"

#endif
#include "Main.h"

int main()
{
    Player P;
    return 0;
}