数组存储的分段错误

时间:2014-04-18 17:45:59

标签: c++ arrays segmentation-fault

我正在研究一个原始版本的砖块断路器,用于介绍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
    }
}

1 个答案:

答案 0 :(得分:0)

您可能需要为GRect

实现复制构造函数
GRect(GRect const &copy);

要测试此功能,您可以尝试更换:

GRect brick = newGRect(column*40, 0, 37, 20);

使用:

brick_Array[column] = newGRect(column*40, 0, 37, 20);

您可能还应该避免将变量作为非引用发送给方法,因为这会导致它们被复制,例如GWindow window应该替换为GWindow &window