Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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++;错误:在';之前应为非限定id;[';代币 我试图在C++中做一个简单的游戏,我几乎完成了,但是我一直在运行这个错误。我确信这些是语法错误,我不知道如何修复它们。 Board::Board() { side = 6; Piece[][] spaces = new Piece[6][6]; for (int row = 00; row < side; ++row) { for (int column = 0; column < side; ++column) { spaces[row][column] = new blankPiece; } } } Board::Board() { 侧面=6; 工件[][]空格=新工件[6][6]; 用于(int row=00;row >(无论那是什么)都是不必要的,因为默认(无参数)构造函数:::分段()/代码>应该将对象初始化为空白状态。要重新初始化,请使用< /P> myPiece = Piece();_C++_Eclipse - Fatal编程技术网

c++;错误:在';之前应为非限定id;[';代币 我试图在C++中做一个简单的游戏,我几乎完成了,但是我一直在运行这个错误。我确信这些是语法错误,我不知道如何修复它们。 Board::Board() { side = 6; Piece[][] spaces = new Piece[6][6]; for (int row = 00; row < side; ++row) { for (int column = 0; column < side; ++column) { spaces[row][column] = new blankPiece; } } } Board::Board() { 侧面=6; 工件[][]空格=新工件[6][6]; 用于(int row=00;row >(无论那是什么)都是不必要的,因为默认(无参数)构造函数:::分段()/代码>应该将对象初始化为空白状态。要重新初始化,请使用< /P> myPiece = Piece();

c++;错误:在';之前应为非限定id;[';代币 我试图在C++中做一个简单的游戏,我几乎完成了,但是我一直在运行这个错误。我确信这些是语法错误,我不知道如何修复它们。 Board::Board() { side = 6; Piece[][] spaces = new Piece[6][6]; for (int row = 00; row < side; ++row) { for (int column = 0; column < side; ++column) { spaces[row][column] = new blankPiece; } } } Board::Board() { 侧面=6; 工件[][]空格=新工件[6][6]; 用于(int row=00;row >(无论那是什么)都是不必要的,因为默认(无参数)构造函数:::分段()/代码>应该将对象初始化为空白状态。要重新初始化,请使用< /P> myPiece = Piece();,c++,eclipse,C++,Eclipse,以下是eclipse所说的: ..\Board.cpp: In constructor 'Board::Board()': ..\Board.cpp:13:7: error: expected unqualified-id before '[' token ..\Board.cpp:18:30: error: no match for 'operator=' in '((Board*)this)->Board::spaces[row][column] = (operator new(8u)

以下是eclipse所说的:

..\Board.cpp: In constructor 'Board::Board()':
..\Board.cpp:13:7: error: expected unqualified-id before '[' token
..\Board.cpp:18:30: error: no match for 'operator=' in '((Board*)this)->Board::spaces[row][column] = (operator new(8u), (<statement>, ((blankPiece*)<anonymous>)))'
..\/Piece.h:14:1: note: candidate is: Piece& Piece::operator=(const Piece&)
。\Board.cpp:在构造函数“Board::Board()”中:
..\Board.cpp:13:7:错误:在“[”标记之前应为非限定id
..\Board.cpp:18:30:错误:在((Board*)this)->Board::spaces[row][column]=(运算符新(8u),(,((blankPiece*))中没有匹配项
..\/Piece.h:14:1:注:候选项为:Piece&Piece::operator=(const-Piece&)
这是非法的:

Piece[][]
C++不将二维数组存储为指针数组,而是存储为一系列平面子数组。因此,必须指定除最后一个边界以外的所有数组

另外,如果数组大小是固定的,
new
是不必要的,也是不需要的。只需使用此选项即可

Piece spaces[6][6]; // that's all!

最后,数组中的条目是<代码> Tabe<代码>对象,而不是指针。初始化它们到<代码> BLUCKEATE < /C> >(无论那是什么)都是不必要的,因为默认(无参数)构造函数<代码>:::分段()/代码>应该将对象初始化为空白状态。要重新初始化,请使用< /P>

myPiece = Piece();

如果数组大小可变,最佳做法是使用
std::vector
而不是
new[]

typedef vector< vector< Piece > > Board;
Board spaces( 6, vector< Piece >( 6 ) );
typedef向量>板;
板空间(6,向量(6));
这有点难看,您可能会研究类似于
boost::multi_array

的替代方案这是非法的:

Piece[][]
C++不将二维数组存储为指针数组,而是存储为一系列平面子数组。因此,必须指定除最后一个边界以外的所有数组

另外,如果数组大小是固定的,
new
是不必要的,也是不需要的。只需使用此选项即可

Piece spaces[6][6]; // that's all!

最后,数组中的条目是<代码> Tabe<代码>对象,而不是指针。初始化它们到<代码> BLUCKEATE < /C> >(无论那是什么)都是不必要的,因为默认(无参数)构造函数<代码>:::分段()/代码>应该将对象初始化为空白状态。要重新初始化,请使用< /P>

myPiece = Piece();

如果数组大小可变,最佳做法是使用
std::vector
而不是
new[]

typedef vector< vector< Piece > > Board;
Board spaces( 6, vector< Piece >( 6 ) );
typedef向量>板;
板空间(6,向量(6));

这有点难看,您可能会考虑其他选择,如
boost::multi_array

这是一行:
Piece[][]spaces=new Piece[6][6];

<>这不是C++如何构造数组的类型名称。
Piece (*spaces)[6] = new Piece[6][6];

这一行:
Piece[][]空格=新的Piece[6][6];

<>这不是C++如何构造数组的类型名称。
Piece (*spaces)[6] = new Piece[6][6];

无法声明具有多个未知维度的数组。请改用指针或
std::vector


此外,您还可以分配保存在局部变量
空格中的内存,该变量一旦退出函数就会消失,它应该是类成员。

您不能声明具有超过1个未知维度的数组。请改用指针或
std::vector


此外,您可以分配内存,这些内存保存在局部变量
空格中,一旦退出函数就会消失,它应该是一个类成员。

我认为您无法执行
片段[][]
,请尝试:

Piece** spaces = new Piece*[6];
for(int i = 0; i < 6; i++) {
    spaces[i] = new Piece[6];
}
工件**空格=新工件*[6];
对于(int i=0;i<6;i++){
空格[i]=新件[6];
}

或者使用。

我认为你做不到
Piece[][]
,试试:

Piece** spaces = new Piece*[6];
for(int i = 0; i < 6; i++) {
    spaces[i] = new Piece[6];
}
工件**空格=新工件*[6];
对于(int i=0;i<6;i++){
空格[i]=新件[6];
}
或者使用。

只使用这个

工件空间[6][6]

就用这个

工件空间[6][6]


可能的复制感谢很多,这是有效的,我知道我不应该使用数组,但我仍然不熟悉向量,因为我有点新的C++,我一定会尝试向量替代在这个游戏的副本,以获得良好的把握。我也会检查Boost多阵列未来。一切都很好。再做一次,谢谢,非常感谢!这很有效,我知道我不应该使用数组,但是我对向量还不熟悉,因为我对C++有点陌生,我一定会尝试向量替换在这个游戏的副本中得到很好的把握。rything做得很好,只是需要做一些小的修改并测试游戏。再一次,谢谢!