C++ 错误:在{in c+;+;
我试图将一维数组初始化为类中的成员变量,但得到了预期的表达式错误 以下是俄罗斯方块.h文件中的声明:C++ 错误:在{in c+;+;,c++,arrays,class,C++,Arrays,Class,我试图将一维数组初始化为类中的成员变量,但得到了预期的表达式错误 以下是俄罗斯方块.h文件中的声明: private: int* rotate(char piece,int rot); int width; int* heights; char* data[0]; const string blockkeys; int *blocks; }; 这是构造器: Tetris::Tetris(int w):blockkeys("IOJLZST"){
private:
int* rotate(char piece,int rot);
int width;
int* heights;
char* data[0];
const string blockkeys;
int *blocks;
};
这是构造器:
Tetris::Tetris(int w):blockkeys("IOJLZST"){
blocks = new int[7*4*2]={
0,0,0,1,0,2,0,3,
0,0,0,1,1,1,1,0,
0,0,1,0,1,1,1,2,
0,0,1,0,0,1,0,2,
0,0,1,0,0,1,-1,1,
0,0,1,0,1,1,2,1,
0,0,-1,1,1,1,2,1};
width=w;
heights=new int[width];
char *data[width];
for (unsigned int i=0; i<width; ++i){
data[i]=new char[0];
heights[i]=0;
}
}
俄罗斯方块:俄罗斯方块(intw):区块键(“IOJLZST”){
块=新整数[7*4*2]={
0,0,0,1,0,2,0,3,
0,0,0,1,1,1,1,0,
0,0,1,0,1,1,1,2,
0,0,1,0,0,1,0,2,
0,0,1,0,0,1,-1,1,
0,0,1,0,1,1,2,1,
0,0,-1,1,1,1,2,1};
宽度=w;
高度=新整数[宽度];
字符*数据[宽度];
对于(未签名int i=0;i)您检查了语法吗?恐怕“new int(7×4×2)=任何东西”不是C++中的一个有效的初始化表达式。 此外,长度为零的数组声明无效 操作说明后编辑: 尝试将数组声明为静态:
class Tetris {
....
static int blocks[7*4*2];
};
int Tetris::blocks[7*4*2]={
0,0,0,1,0,2,0,3,
0,0,0,1,1,1,1,0,
0,0,1,0,1,1,1,2,
0,0,1,0,0,1,0,2,
0,0,1,0,0,1,-1,1,
0,0,1,0,1,1,2,1,
0,0,-1,1,1,1,2,1};
然后在
俄罗斯方块
成员函数中使用块
。块不是零长度数组。@DanG.,但数据
是。新整数[7*4*2]
不是左值。为什么要给它赋值?但是数据
没有引起任何问题,事实上,数据工作得很好,报告的实际错误是什么?有没有什么方法可以实例化这个成员变量,而不必循环并将每个索引分配给我想要的数字。我将其更改为new int[56]
但它仍然没有work@DanG.问题在于两个=
符号,而不是multiplication@Angew那么,我如何在一行代码中初始化这个数组呢?我不想遍历所有56项,恐怕不行。您需要遍历整个分配的数组,并分别为每个项分配一个值(除非您之前已经分配并初始化了这样的数组,否则在这种情况下,您可能只是memmove
内容,但这会带来严重的问题…!)。但是,一旦您有了这样的静态初始值设定项,是什么阻止您分配和使用静态数组?您真的需要将其分配到具有new
的堆中吗?