Ошибка сегментации при работе с 2D-массивами [закрыто]

В java -cp bin;deps/InetAddressLocator.jar;deps/lombok.jar;deps/commons-collections4-4.0.jar;deps/mina-core-1.1.7.jar;deps/mysql.jar;deps/slf4j-api-1.6.1;deps/slf4j-simple-1.6.1.jar; game.engine.GameEngine true 0 0

slf4j-api-1.6.1 сжимает «.jar» в конце. Он должен читать как «slf4j-api-1.6.1.jar»

-2
задан Lukali 5 March 2019 в 14:21
поделиться

1 ответ

Сначала я вижу проблему, состоящую в том, что ваш конструктор по умолчанию и конструктор копирования не инициализируют myGrid. то, что вы делаете в них, создаст дополнительный массив с тем же именем, которое «затеняет» myGrid. вместо этого вы должны сделать:

Grid::Grid(const Grid& g2)
{
    size = g2.size;
    row = g2.row;
    column = g2.column;
    num_living = g2.num_living;

    myGrid = new char*[row]; // removed "char**" at the start of this line
    for(int i = 0; i < row; i++)
        myGrid[i] = new char[column];

    for(int i1 = 0; i1 < row; i1++)
    {
        for(int i2 = 0; i2 < column; i2++)
        {
            //copy(&g2[i1][i2], &g2[i1][i2]+row*column,&myGrid[i1][i2]);
            myGrid[i1][i2] = g2.get(i1,i2);
        }
    }
}

ваш конструктор по умолчанию имеет ту же проблему. но обратите внимание, что вы не можете инициализировать его с помощью фигурных скобок. но вам не нужно иметь конструктор по умолчанию, если вы его не используете.

0
ответ дан Azad 5 March 2019 в 14:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: