Мне интересно, как (un) распространять инкапсуляцию алгоритма в класс? Более конкретно, вместо того, чтобы иметь несколько отдельных функций, которые пересылают общие параметры между собой:
void f(int common1, int param1, int *out1);
void g(int common1, int common2, int param1, int *out2)
{
f(common1, param1, ..);
}
для инкапсуляции общих параметров в класс и выполнения всей работы в конструкторе:
struct Algo
{
int common1;
int common2;
Algo(int common1, int common2, int param)
{ // do most of the work }
void f(int param1, int *out1);
void g(int param1, int *out2);
};
Кажется очень практичным не пересылать общие параметры и промежуточные результаты через аргументы функции. Но я не видел широко используемого "шаблона". Каковы возможные недостатки?