Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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++_Arrays_Constants_Chess - Fatal编程技术网

C++ 数组绑定在';]之前不是整数常量';代币

C++ 数组绑定在';]之前不是整数常量';代币,c++,arrays,constants,chess,C++,Arrays,Constants,Chess,主要内容: 板.h中的错误行8 C:\C++projects\CHESS-P3\board.h | 8 |错误:数组绑定不是“]”标记前面的整数常量|正如错误消息所示,board_length不是常量。要解决这个问题,请更改线路 #ifndef BOARD_H #define BOARD_H #include "squares.h" class Board { static int board_length; Square boardSquares[board_

主要内容:

板.h中的错误行8
C:\C++projects\CHESS-P3\board.h | 8 |错误:数组绑定不是“]”标记前面的整数常量|

正如错误消息所示,
board_length
不是常量。要解决这个问题,请更改线路

#ifndef BOARD_H
#define BOARD_H
#include "squares.h"

class Board
{
   static int board_length;
   Square boardSquares[board_length][board_length];
   public:
   Board();
   void printBoard();

};
static const int board_length = 8;
board.h中

static int board_length;
然后拆下线路

#ifndef BOARD_H
#define BOARD_H
#include "squares.h"

class Board
{
   static int board_length;
   Square boardSquares[board_length][board_length];
   public:
   Board();
   void printBoard();

};
static const int board_length = 8;
从你的主文件。这应该可以编译,但我不能确定,因为您没有提供

奖励:为了避免意外,您还应该更改

int Board::board_length=8;
主要是为了

Board *tabla=new Board();
tabla->printBoard();
由于您似乎没有传递
实例,因此这里不需要使用指针


一般的经验法则是:每当某个地方有一个新的
时,也需要相应的
delete
。否则,您的程序可能会泄漏内存。虽然这对于一个小的、运行时间短的示例程序来说没什么大不了的,但对于一个运行时间长的程序来说,这可能会成为一个严重的问题。

这是一个很好的int模板用例:

董事会

Board tabla;
tabla.printBoard();
模板
班级委员会
{
静态const int board_length=_board_length;
int boardSquares[_board_length][_board_length];
公众:
董事会{};
无效打印板(){};
};
main.cpp

template<int _board_length>
class Board
{
   static const int board_length = _board_length;
   int boardSquares[_board_length][_board_length];
   public:
   Board(){};
   void printBoard(){};

};
。。。
constexpr int BL=8;
//odr声明静态成员(如果重要的话)
模板
线路板常数:线路板长度;
int main(){
董事会表格;
表A.印刷板();
}

这样,数组的实际维度在main中定义,而不是在声明类的include文件中定义,并且
Board
中的所有方法都可以知道实际大小。

您发布了两次相同的代码。错误在您未显示的代码中。错误在
Board.h
中,您没有向我们显示。请始终向我们展示正确的复制粘贴完整的生成输出。请回答您的问题。您可能在未显示的代码中遇到了问题。顺便说一句,没有理由在此代码段中使用指针:
Board tabla;表A.印刷板()-泄漏消失了。