我正在为CS入门课程编写一个破砖机的原始版本。方法init Bricks实例化了一系列对象类型为GRect的砖块。然后数组brick_Array用来存储这些对象,这样以后我就可以知道那个球是否击中了其中一个对象。我非常确定,当我尝试将对象存储在数组中时,会发生默认错误。
GRect brick_Array[COLS];
void initBricks(GWindow window, GRect brick_Array[])
{
for (int column = 0; column < COLS; column++)
{
GRect brick = newGRect(column*40, 0, 37, 20);
setColor(brick, "BLACK");
setFilled(brick, true);
add(window, brick);
brick_Array[column] = brick;//segmentation fault
}
}发布于 2014-04-19 02:01:17
您可能需要实现GRect的复制构造函数
GRect(GRect const ©);要测试这一点,您可以尝试替换:
GRect brick = newGRect(column*40, 0, 37, 20);通过以下方式:
brick_Array[column] = newGRect(column*40, 0, 37, 20);您可能还应该避免将变量作为非引用发送到方法,因为这会导致它们被复制,例如,应该用GWindow &window替换GWindow window。
https://stackoverflow.com/questions/23159331
复制相似问题