C++ C++;类中的数组变量导致;未在此范围内声明;实现文件中的一个函数出错,但构造函数中没有
标题几乎说明了一切。我被要求为我正在学习的一门软件课程编写一个程序,在跳棋游戏中,两个基本算法相互对抗。为此,我有一个Square类,用于存储该正方形是否被占用(bool)、由哪个播放器(enumpl,NA、P1或P2)和该正方形的标签(Index、int)。然后我创建了一个Board类,它实际上是一个二维正方形数组,其尺寸由用户指定。但是,在Board类的实现文件中,在我的一个函数中使用Board[][]数组时出错。我得到了错误“board未在此范围内声明”,这应该不会太难理解,除了导致该错误的完全相同的语法(至少从我所看到的情况来看,我已经努力解决了一段时间了)在同一文件中的board类的构造函数中运行良好。以下是我的Board.h文件的代码,以及我的Board.cpp文件的相关部分: 董事会h:C++ C++;类中的数组变量导致;未在此范围内声明;实现文件中的一个函数出错,但构造函数中没有,c++,arrays,class,C++,Arrays,Class,标题几乎说明了一切。我被要求为我正在学习的一门软件课程编写一个程序,在跳棋游戏中,两个基本算法相互对抗。为此,我有一个Square类,用于存储该正方形是否被占用(bool)、由哪个播放器(enumpl,NA、P1或P2)和该正方形的标签(Index、int)。然后我创建了一个Board类,它实际上是一个二维正方形数组,其尺寸由用户指定。但是,在Board类的实现文件中,在我的一个函数中使用Board[][]数组时出错。我得到了错误“board未在此范围内声明”,这应该不会太难理解,除了导致该错误
#ifndef BOARD_H
#define BOARD_H
#include "Square.h"
#include <string>
class Board
{
public:
Board(int);
int getBsize();
int getWinner();
std::string getCmove();
Square getSquare(int, int);
void setWinner(int);
void setCmove(std::string);
bool canMoveL(int, int);
bool canMoveR(int, int);
bool canTakeL(int, int);
bool canTakeR(int, int);
void P1Move(int, int);
void P2Move(int, int);
void printCmove(std::string);
void printWin(std::string);
private:
Square board[12][12];
int bSize;
int winner;
std::string cMove;
};
#endif // BOARD_H
\ifndef BOARD\u H
#定义BOARD_H
#包括“Square.h”
#包括
班级委员会
{
公众:
董事会(内部);
int getBsize();
int getWinner();
std::字符串getCmove();
Square-getSquare(int,int);
无效(整数);
void setCmove(标准::字符串);
bool-canMoveL(int,int);
布尔canMoveR(int,int);
布尔·坎塔克尔(int,int);
布尔坎塔克(int,int);
无效P1Move(int,int);
无效P2Move(int,int);
void printCmove(标准::字符串);
void printWin(标准::字符串);
私人:
方板[12][12];
int-bSize;
int优胜者;
std::字符串cMove;
};
#endif//BOARD_H
Board.cpp构造函数以及文件顶部(如果错误与Board.cpp中包含的库和文件有关):
#包括“Square.h”
#包括“Board.h”
#包括
线路板::线路板(int bSize)
{
Board::bSize=bSize;
董事会:获胜者=0;
董事会::cMove=“”;
董事会:董事会[12][12];
int x=bSize-1;
int指数=1;
对于(int j=0;jx/2+1)
{
板[i][j]=正方形(真,P2,索引);
索引++;
}
}
其他的
{
板[i][j]=正方形(假,NA,0);
}
}
}
}
导致错误的Board.cpp中的函数:
bool canMoveL(int i, int j)
{
bool temp = false;
Square sq = board[i][j];
if((i-1 < 0)||((sq.getPl() == P1)&&(j-1 >= bSize))||((sq.getPl() == P2)&&(j-1 < 0)))
{
return temp;
}
if(sq.getOcc() == 0)
{
return temp;
}
else
{
if(sq.getPl() == P1)
{
temp = true;
}
else if(sq.getPl() == P2)
{
temp = true;
}
}
return temp;
}
bool canMoveL(inti,intj)
{
布尔温度=假;
正方形sq=板[i][j];
如果((i-1<0)| |((sq.getPl()=P1)和&(j-1>=bSize))| |((sq.getPl()=P2)和&(j-1<0)))
{
返回温度;
}
if(sq.getOcc()==0)
{
返回温度;
}
其他的
{
if(sq.getPl()==P1)
{
温度=真;
}
else if(sq.getPl()==P2)
{
温度=真;
}
}
返回温度;
}
注意:由于我无法测试canMovL函数,我意识到其中可能也有错误,但我特别想寻求帮助来修复我在canMovL()中使用board array时遇到的错误。谢谢。boolcanmovel(inti,intj)
应该是
bool Board::canMoveL(inti,intj)
否则,您将定义与板
无关的自由函数boolcanmovel(inti,intj)
应该是
bool Board::canMoveL(inti,intj)
否则您将定义与板
无关的自由函数
bool canMoveL(int i, int j)
{
bool temp = false;
Square sq = board[i][j];
if((i-1 < 0)||((sq.getPl() == P1)&&(j-1 >= bSize))||((sq.getPl() == P2)&&(j-1 < 0)))
{
return temp;
}
if(sq.getOcc() == 0)
{
return temp;
}
else
{
if(sq.getPl() == P1)
{
temp = true;
}
else if(sq.getPl() == P2)
{
temp = true;
}
}
return temp;
}