多维数组故障(界限)

Multidimensional Array trouble (bounds)

本文关键字:界限 故障 数组      更新时间:2023-10-16

这是有问题的代码:

#ifndef WEAPONS_H_INCLUDED
#define WEAPONS_H_INCLUDED
#include "Battleship header.h"
void Player::torpedo(string enemyEvtTracker[][10], string myhitboard[][10])
{
    string bcn; //board column number
    cout << "Enter board column number (1-9): "; cin >> bcn; flush();
    if(bcn!="1"&&bcn!="2"&&bcn!="3"&&bcn!="4"&&bcn!="5"&&bcn!="6"&&bcn!="7"&&bcn!="8"&&bcn!="9")
    {cout <<endl<< "That is not a valid number.";}
    return;
}

#endif // WEAPONS_H_INCLUDED

这是类播放器:

#ifndef BATTLESHIPPLAYERCLASS_H_INCLUDED
#define BATTLESHIPPLAYERCLASS_H_INCLUDED
using namespace std;
class Player // define a class for a player
{
    void torpedo(string enemyEvtTracker[10][10], string myhitboard[10][10]);
    void cannon();
    void scatter();
    void menu();
    friend int main(int, char*[]);   //Let main access the protected members
    friend int routine_END(void);
    public:
    void displaydata()
    {cout << money << endl << gunpowder << endl << ammo_cannon << endl << ammo_4hit << endl;}
    string savename;
    int gunpowder;
    int ammo_cannon;
    int ammo_4hit; string gun_4;
    int ammo_scatter; string gun_s;
    int money;
    Player(string name){money=18000; gunpowder=100;ammo_cannon=20; ammo_4hit=0; ammo_scatter=0; gun_4="OFF"; gun_s="OFF";playername=name;}  //Define the constructor
    void simplegame(void) {gunpowder=99999999; ammo_cannon=999999999; ammo_scatter=4; gun_s="ON";}
    void getname(string *playername, int option)
    {
        if (option==1)
        {cout << "Enter your name here player 1:"; cin >> *playername;}
        else {cout << "Enter your name here player 2:"; cin >> *playername;}
    }
    string playername;
    char mainRowGuess;
    int check_transaction (int mymoney, int moneyowed)
    {
        if (mymoney-moneyowed<<0) {return 0;}
        else {return 1;}
    }
    void change_Answer_to_number(char row,int* outputRow)
    {
            if (row=='A'||row=='a'){*outputRow =1;}
       else if (row=='B'||row=='b'){*outputRow =2;}
       else if (row=='C'||row=='c'){*outputRow =3;}
       else if (row=='D'||row=='d'){*outputRow =4;}
       else if (row=='E'||row=='e'){*outputRow =5;}
       else if (row=='F'||row=='f'){*outputRow =6;}
       else if (row=='G'||row=='g'){*outputRow =7;}
       else if (row=='H'||row=='h'){*outputRow =8;}
       else if (row=='I'||row=='i'){*outputRow =9;}
       else {*outputRow = 0;}
    }
    void changeCharToNumber(char row, int* outputRow)
    {
            if (row=='1'){*outputRow=1;}
       else if (row=='2'){*outputRow=2;}
       else if (row=='3'){*outputRow=3;}
       else if (row=='4'){*outputRow=4;}
       else if (row=='5'){*outputRow=5;}
       else if (row=='6'){*outputRow=6;}
       else if (row=='7'){*outputRow=7;}
       else if (row=='8'){*outputRow=8;}
       else if (row=='9'){*outputRow=9;}
       else {cout << "Unexpected Error." << endl; *outputRow=0;}
    }
  char airRowStart; char airColStart; char aircraftDirec;
  char destRowStart; char destColStart; char destroyerDirec;
  char subRowStart; char subColStart; char subDirec;
  char patrolStart; char patrolDirec;
    /// START MENU FUNCTION
    void error_money(void) {cout << "Not enough money!";}
    char startRowAircraftCarrier;
    char startRowDestroyer;
    char startRowSub;
    char startRowPatrolBoat;
    friend int routine_END (void);
    friend void menu (int* gunpowder, int* ammo_cannon, int* ammo_4hit, int* ammo_scatter, int* money, string* gun_4, string* gun_s);

};

#endif // BATTLESHIPPLAYERCLASS_H_INCLUDED

这将生成以下构建日志。。。

--------------建造:在高级战舰对象中调试

[50.0%]编译:main.cppC: \Advanced_Battleship_Revised_511\main.cpp:32:警告:忽略#pragma comment In包含的文件来自C: \Advanced_Battleship_Revised_511\/inputput.h:9,来自C:\Advanced_Battleship_Revised_5111\/战列舰头部h:3,来自C:\Advanced_Battleship_Revised_511\main.cpp:25:C: \Advanced_Battleship_Revised_511\/战列舰玩家等级h:74:警告:"int routine_END()"为已经是"Player"类的朋友C: \Advanced_Battleship_Revised_511\/战列舰玩家等级.h:在成员函数'int中播放器::check_transaction(int,int)':C: \Advanced_Battleship_Revised_5111\/战列舰玩家等级h:33:警告:建议用括号括起来"-"内部"<lt;'在包含的文件中C: \Advanced_Battleship_Revised_511\main.cpp:27:C: \Advanced_Battleship_Revised_511\/战舰菜单.h:在成员函数"void"中播放器::menu()':C: \Advanced_Battleship_Revised_511\/战舰菜单.h:118:警告:标签"GUNPOWDER_MENU_1"已定义但未使用C: \Advanced_Battleship_Revised_511\/战舰菜单.h:166:警告:标签'CIN_WEAPON_OPTION_SCATTER_CANNON'已定义但未使用包含在文件中从…起C: \Advanced_Battleship_Revised_511\main.cpp:30:C: \Advanced_Battleship_Revised_5111\/武器.h:在全球范围内:>C:\Advanced_Battleship_Revised_511\/武器。h:5:错误:声明"enemyEvtTracker"为多维数组必须具有所有的边界除第一个尺寸外的尺寸C: \Advanced_Battleship_Revised_5111\/warms.h:5:错误:应为标记","之前的")"C: \Advanced_Battleship_Revised_5111\/armuses.h:5:错误:预期的构造函数,析构函数或之前的类型转换','令牌C: \Advanced_Battleship_Revised_5111\/armuses.h:5:错误:预期的构造函数,析构函数或之前的类型转换'myhitboard'进程终止,返回状态1(0分1秒)4错误,5个警告

Player::torpedo(string enemyEvtTracker[10][10], string myhitboard[10][10])
{
  //..
}

这是成员函数的定义声明在哪里?

我的猜测是,在声明中,您没有像在定义中那样提到数组的大小。你似乎写得很简单enemyEvtTracker [][]?查看Player类的定义,并验证如何在其中声明torpedo成员函数。