我正在研究一个原始版本的砖块断路器,用于介绍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
}
}
答案 0 :(得分:0)
您可能需要为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
。