Как передать размер рабочей области решателя

#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 конструкторе, который также получает необходимые параметры в качестве аргументов функции.