阵列存储的分段故障

segmentation fault with array storage

本文关键字:故障 分段 存储 阵列      更新时间:2023-10-16

我正在为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
    }
}

您可能需要为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