#c #oop #design-patterns
#c #ооп #шаблоны проектирования
Вопрос:
У меня есть алгоритм обнаружения строк, который использует решатель (алгоритм оптимизации) для поиска некоторых решений проблемы обнаружения строк.
class line-detect {
public:
(some functions);
private:
solver mSolve;
}
class Solver {
public:
(Some functions);
private:
(some functions);
}
В solver.cpp размер рабочей области / буфера, используемого для вычислений решателя, распределяется с использованием переменных алгоритма определения строки.
В Solver.cpp размер рабочей области распределяется следующим образом:
const uint32_t SIZEOF_WORKSPACE = static_cast<uint32_t>(((2 * NUM_ERRS_MAX) (5 * NUM_VARS_MAX) NUM_VARS_MAX * NUM_ERRS_MAX ) * sizeof(float64_t) (NUM_VARS_MAX * sizeof(int32_t)));
В настоящее время решатель находится внутри самого алгоритма, но я хочу извлечь решатель и использовать как отдельный объект / модуль. Я извлек решатель, но рабочая область / буфер этого размера должна быть распределена статически (т. Е. я должен жестко запрограммировать значения алгоритма определения строки в модуле решателя)
Вопросы: каков наилучший из возможных способов распределения размера рабочей области без необходимости жестко кодировать переменные алгоритма определения строки в модуле решателя?
Комментарии:
1. Этот вопрос больше связан с дизайном
2. Очевидным решением было бы вычислить размер буфера в
Solver
конструкторе, который также получает необходимые параметры в качестве аргументов функции.