У меня есть функция, которая изменяет значения 4 элементов массива. Он делает это правильно, но также делает копию 4 элементов со смещением (1, -10). Я знаю, что это не имеет особого смысла, и я не знаю, как это объяснить, поэтому я просто покажу это.
Вот код:
void PlayArea::addFigure(std::array<Vector2i, 4> figure, int color)
{
printCells();
std::cout << "\n\n";
for (int i = 0; i < 4; i++)
{
int x = figure[i].x;
int y = figure[i].y;
cell[x][y] = color;
}
printCells();
std::cout << "\n\n";
}
Обратите внимание на printCells функция. Он печатает элементы массива. Тот, что перед l oop, печатает все нули. Тот, что после l oop печатает что-то вроде того, что я описал в первом абзаце Вот изображение:
![Console output](https://i.stack.imgur.com/r1tsN.png)
Редактировать: Метод printCells печатает содержимое ячейки массива 10 на 20, не более того. Я просто добавил его для отладки. Вот оно:
void PlayArea::printCells()
{
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 10; j++)
{
std::cout << cell[j][i] << ", ";
}
std::cout << "\n";
}
}
Предполагается, что метод addFigure добавляет только 4 элемента в массив ячеек. Я не могу понять, как он хранит 8.
Редактировать 2:
Я попытался повторить проблему на отдельный проект, и это код:
#include "stdafx.h"
#include <SFML/Graphics.hpp>
#include <array>
#include <iostream>
#include <conio.h>
using namespace sf;
int cell[20][10] = { 0 };
void printCells()
{
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 10; j++)
{
std::cout << cell[j][i] << ", ";
}
std::cout << "\n";
}
}
int main()
{
std::array<Vector2i, 4> figure;
figure[0].x = 1;
figure[0].y = 16;
figure[1].x = 1;
figure[1].y = 17;
figure[2].x = 1;
figure[2].y = 18;
figure[3].x = 1;
figure[3].y = 19;
printCells();
std::cout << "\n\n";
for (int i = 0; i < 4; i++)
{
cell[figure[i].x][figure[i].y] = 7;
}
//cell[1][19] = 7;
printCells();
std::cout << "\n\n";
_getch();
}
Каждый раз, когда я изменяю значение элемента массива, он все равно меняет два значения на 1 столбец и 10 строк друг от друга. Вот изображение:
![enter image description here](https://i.stack.imgur.com/Yzw7S.png)