Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;类中的数组变量导致;未在此范围内声明;实现文件中的一个函数出错,但构造函数中没有_C++_Arrays_Class - Fatal编程技术网

C++ C++;类中的数组变量导致;未在此范围内声明;实现文件中的一个函数出错,但构造函数中没有

C++ C++;类中的数组变量导致;未在此范围内声明;实现文件中的一个函数出错,但构造函数中没有,c++,arrays,class,C++,Arrays,Class,标题几乎说明了一切。我被要求为我正在学习的一门软件课程编写一个程序,在跳棋游戏中,两个基本算法相互对抗。为此,我有一个Square类,用于存储该正方形是否被占用(bool)、由哪个播放器(enumpl,NA、P1或P2)和该正方形的标签(Index、int)。然后我创建了一个Board类,它实际上是一个二维正方形数组,其尺寸由用户指定。但是,在Board类的实现文件中,在我的一个函数中使用Board[][]数组时出错。我得到了错误“board未在此范围内声明”,这应该不会太难理解,除了导致该错误

标题几乎说明了一切。我被要求为我正在学习的一门软件课程编写一个程序,在跳棋游戏中,两个基本算法相互对抗。为此,我有一个Square类,用于存储该正方形是否被占用(bool)、由哪个播放器(enumpl,NA、P1或P2)和该正方形的标签(Index、int)。然后我创建了一个Board类,它实际上是一个二维正方形数组,其尺寸由用户指定。但是,在Board类的实现文件中,在我的一个函数中使用Board[][]数组时出错。我得到了错误“board未在此范围内声明”,这应该不会太难理解,除了导致该错误的完全相同的语法(至少从我所看到的情况来看,我已经努力解决了一段时间了)在同一文件中的board类的构造函数中运行良好。以下是我的Board.h文件的代码,以及我的Board.cpp文件的相关部分:

董事会h:

#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;
}