因此,我有一系列怪物和一个显示其名称的函数。问题是调试器说Mons(数组)未定义。我想知道我在做什么错。请帮忙!
错误大部分是未定义的Mons。

#include <iostream>
#include <fstream>
#include <windows.h>
#include <time.h>

/**
RPG v0.1.6
-
**/

//-- WinAPI stuff
void ClearScreen()
  {
  HANDLE                     hStdOut;
  CONSOLE_SCREEN_BUFFER_INFO csbi;
  DWORD                      count;
  DWORD                      cellCount;
  COORD                      homeCoords = { 0, 0 };

  hStdOut = GetStdHandle( STD_OUTPUT_HANDLE );
  if (hStdOut == INVALID_HANDLE_VALUE) return;

  /* Get the number of cells in the current buffer */
  if (!GetConsoleScreenBufferInfo( hStdOut, &csbi )) return;
  cellCount = csbi.dwSize.X *csbi.dwSize.Y;

  /* Fill the entire buffer with spaces */
  if (!FillConsoleOutputCharacter(
    hStdOut,
    (TCHAR) ' ',
    cellCount,
    homeCoords,
    &count
    )) return;

  /* Fill the entire buffer with the current colors and attributes */
  if (!FillConsoleOutputAttribute(
    hStdOut,
    csbi.wAttributes,
    cellCount,
    homeCoords,
    &count
    )) return;

  /* Move the cursor home */
  SetConsoleCursorPosition( hStdOut, homeCoords );
  }



class Player {
    public:
    int HP;
    int MHP;
    int STR;
    int AGI;
    int RES;
    int XP;
    int LVL;
    Player() { HP = 8; MHP = 8; STR = 4; AGI = 3; RES = 2; XP = 0; LVL = 1; };
private:
};

struct DT {

void save_to_file(std::string filename, const Player& P)
{
    std::ofstream f( filename.c_str() );
    f << P.HP << std::endl;
    f << P.MHP << std::endl;
    f << P.STR << std::endl;
    f << P.AGI << std::endl;
    f << P.RES << std::endl;
    f << P.XP << std::endl;
    f << P.LVL << std::endl;
}

bool load_from_file(std::string filename, Player& P) {
  std::ifstream f( filename.c_str() );
  f >> P.HP;
  f >> P.MHP;
  f >> P.STR;
  f >> P.AGI;
  f >> P.RES;
  f >> P.XP;
  f >> P.LVL;
  if(f.good()){
    std::cout << "Success!" << std::endl;
  }
  else {
    std::cout << "Failure" << std::endl;
  }
  return f.good();
}

};

class Monster {
public:
    int HP;
    int MHP;
    int STR;
    int AGI;
    int RES;
    int XP;
    std::string name;
    ///For Calling
    Monster() { };
    ///Set variables for new battle
    Monster(int A, int B, int C, int D, int E, int F, std::string G){
    this->HP = A;
    this->MHP = B;
    this->STR = C;
    this->AGI = D;
    this->RES = E;
    this->XP = F;
    this->name = G;
    };
    void setStats(int A, int B, int C, int D, int E, int F, std::string G){
    this->HP = A;
    this->MHP = B;
    this->STR = C;
    this->AGI = D;
    this->RES = E;
    this->XP = F;
    this->name = G;
    };
};

int monstersalive = 3;




// -- Call Functions
void BtlDisplay(Player& P, Mons M[]);
void Battle(Player& P, Mons M[]);

int main()
{
    // -- Call Classes
    Player p;
    DT d;

    Monster Mons[3];
    for(int j = 0; j < 3; j++){
        Mons[j].setStats(9,9,9,9 + j,9,9,"Noob");
    }

    BtlDisplay(p,Mons);


    //Battle(p,m);


    d.save_to_file("GameData1.txt", p);
    d.save_to_file("GameData2.txt", p);
    d.save_to_file("GameData3.txt", p);



    return 0;
}

void BtlDisplay(Player& P, Mons M[]) //-- Displays battle stats
{
    ClearScreen();
    std::cout << "---------" << std::endl;
    std::cout << "L " << P.LVL << std::endl;
    std::cout << "HP " << P.HP << "/" << P.MHP << std::endl;
    std::cout << "---------\n\n" << std::endl;
    std::cout << "Monsters\n--------" << std::endl;
    for(int i = 0; i < 3; i++){
        if(M[i].HP > 0){

        }
    }
}

void Battle(Player& P, Mons M[])
{
    while(monstersalive > 0 && P.HP > 0){
        srand(time(NULL));
    }
}

最佳答案

void BtlDisplay(Player& P, Mons M[]);


这就是说,您要将数组传递给名为M的参数,其中元素的类型为Mons

但是Mons不是类型,它是局部变量的名称。类型是Monster

尝试

void BtlDisplay(Player& P, Monster M[])


甚至

void BtlDisplay(Player& P, Monster Mons[])

08-04 15:09