多维数组故障(界限)
Multidimensional Array trouble (bounds)
这是有问题的代码:
#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
成员函数。
- 分段故障(堆芯转储)矢量
- C++中的动态铸造故障
- 数组的指针从不分段故障
- vscode g++链路故障:体系结构x86_64的未定义符号
- 访问被拒绝后,c++中的故障保护代码
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 调试 CUDA MMU 故障
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- Arch Linux.AUR 包 mysql 不能用 makepkg 构建.错误:构建 () 中出现故障
- 正在处理故障(堆芯转储)
- 在 Boost::fiber 中引发的BOOST_ASSERT故障 Visual Studio "Debug" 构建
- 如何进行故障排除:未定义对"非虚拟 thunk to ..."的引用
- C++函数过载会导致 SEG 故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 当新的故障时,是否有必要留出一些紧急内存?
- Python & C-C++ 扩展模块案例段故障
- 带升压的 SEG 故障::make_shared / 特征3 内存.h.
- 在 c++ 中,发生故障后是否需要 stream.clear()?
- std::minstd_rand的界限是什么?
- 多维数组故障(界限)