Один объект должен работать с частью данных (строка массива) из другого объектаC++

Программы на C++. Форум разработчиков
Anonymous
Один объект должен работать с частью данных (строка массива) из другого объекта

Сообщение Anonymous »

Я не профессиональный программист. Я учу своих детей и решил создать решатель для неграмм. Сам алгоритм-это не то, что меня касается, но правильный способ кодировать его.
Что мне нужно, так это идея или какой-то шаблон, как следует решить проблему. />
Я хотел бы проанализировать и изменить массив на основе дополнительных данных. Поскольку анализ в основном ограничен одной строкой (строка или столбцом) и одинаково для рядов и столбцов, я решил определить два класса: < /p>

Код: Выделить всё

class Line
{
short number_of_found_squares;
vector additional_data; //additional data that I mentioned about
...
void some_method1();
...
void solver_algorithm1();
void solver_algorithm2();
}

class Puzzle
{
short width, height;
vector[*] columns, rows; // no. of columns: width, no. of rows: height.
vector board; //array that I mentioned about
...
void some_method1();
...

void solver_algorithm1()
{
for(auto &line : columns)
line.solver_algorithm1();
for(auto &line : rows)
line.solver_algorithm1();
}
...
}

Puzzle myPuzzle('data.txt');
myPuzzle.solver_algorithm1();
Проблема состоит в том, что для того, чтобы сделать правильный расчет в строке :: solver_algorithm1 () , этот метод нуждается в доступе к mypuzzle.board - не только для получения значений, но и для их изменения. Более того, если метод solver_ algorithm1 () из i-th row (I-th Line Object в mypuzzle.rows ) изменяет значение mypuzzle.board [j] , J-Th-столбец (элемент mypuzzle.cols ) wught будет обновлен (например, чтобы увеличить nupres). /> Как это сделать хорошо? Затем этот массив будет скопирован в доску. Это просто, но я сомневаюсь, что это хорошо.

Код: Выделить всё

getter = function(i){return board[i][j]}
или function (i) {return poard [j] } , но я не знаю, как сделать это в C ++.

Может быть, весь мой подход плохой, и я должен сделать все из -за головоломки класса? Я делал это уже так, но код не был очень чистым, потому что:


[*] Я работаю над 1D данных, но использую два индекса: плата [j] .
Мне нужно сделать две почти одинаковые функции: для столбцов и для рядов.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... her-object

Вернуться в «C++»