Padrão de design C ++ para passar um grande número de parâmetros

Tenho uma classe de tamanho razoável que implementa vários algoritmos relacionados à lógica (da teoria dos grafos). Cerca de 10 a 15 parâmetros são necessários como entrada para o algoritmo. Eles não são modificados pelo algoritmo, mas são usados para orientar a operação dele. Primeiro, explico duas opções para implementar isso. Minha pergunta é: qual é uma maneira comum de fazer isso (se é ou não uma das duas opções

Pessoalmente, não gosto de passar esses valores como parâmetros para a função quandoN é grande, especialmente enquanto ainda estou desenvolvendo o algoritm

void runAlgorithm(int param1, double param2, ..., bool paramN);

Em vez disso, tenho uma classeAlgorithm que contém os algoritmos e eu tenho uma estruturaAlgorithmGlobals que contém esses parâmetros. Eu passo essa estrutura para:

void runAlgorithm(AlgorithmGlobals const & globals);

Ou adiciono uma instância pública AlgorithmGlobals à classe:

class Algorithm {
public:
    AlgorithmGlobals globals;
    void runAlgorithm();
}

Então em outro lugar eu usaria assim:

int main() {
    Algorithm algorithm;
    algorithm.globals.param1 = 5;
    algorithm.globals.param2 = 7.3;
    ...
    algorithm.globals.paramN = 5;

    algorithm.runAlgorithm();

    return 0;
}

Observe que o construtor deAlgorithmGlobals define bons padrões para cada um dos parâmetros, portanto, apenas os parâmetros com valores não padrão precisam ser especificado

AlgorithmGlobals não são tornados privados, porque podem ser modificados livremente antes dorunAlgorithm() função @ é chamada. Não há necessidade de "protegê-los".

questionAnswers(6)

yourAnswerToTheQuestion