Ich frage mich, wie (un) üblich es ist, einen Algorithmus in eine Klasse zu kapseln? Genauer gesagt, statt eine Reihe von getrennten Funktionen, die zwischen einander gemeinsame Parameter weiter:Einen Algorithmus in eine Klasse einkapseln
void f(int common1, int param1, int *out1);
void g(int common1, int common2, int param1, int *out2)
{
f(common1, param1, ..);
}
gemeinsame Parameter in eine Klasse zu kapseln und im Konstruktor alle Arbeit tun:
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);
};
Es scheint sehr praktisch, gemeinsame Parameter und Zwischenergebnisse nicht über Funktionsargumente weiterleiten zu müssen. Aber ich habe nicht gesehen, dass dieses "Muster" weit verbreitet ist. Was sind die möglichen Nachteile?
Ich würde erwarten, dass ein Funktionsobjekt mit operator() ausgeführt wird –