Ich Refactoring eine große Menge an Code, wo ich einen zusätzlichen Parameter zu einer Reihe von Funktionen hinzufügen müssen, die immer einen Wert eines Mitglieds dieses Objekts haben wird. So etwas wieNicht statische Mitglieder als Standardparameter in C++
class MyClass
{
public:
CMyObject A,B;
void MyFunc(CMyObject &Object);
// used to be void MyFunc();
};
Jetzt würde, wie ich es eigentlich
class MyClass
{
public:
CMyObject A,B;
void MyFunc(CMyObject &Object = A);
};
Aber ich bin nicht erlaubt zu lesen einen Standardparameter zu haben, die ein nicht-statisches Element ist. Ich habe gelesen this similar question, die vorschlagen, dass dies nicht möglich ist, aber ich frage mich, ob es eine sinnvolle Problemumgehung gibt. Der Grund dafür ist, dass 95% der Zeit der Standardparameter verwendet wird und somit die Verwendung eines Standardparameters die Menge an Code, die ich ändern muss, stark reduziert. Meine beste Lösung ist bisher so etwas;
Das ist weniger als elgant, aber gibt es eine bessere Möglichkeit, dies zu tun, die ich vermisse?
Bearbeiten: FWIW, der Grund für den zusätzlichen Parameter besteht darin, einige zustandsbezogene Elemente aus dem betreffenden Objekt zu externalisieren, um Multithreading zu unterstützen.
Wenn es ein Datenelement hat, ist es per Definition nicht zustandslos. –
Messepunkt Neil, Text bearbeitet. –