Mitgliedsvariablen als Standardargumente in C verwenden
In C müssen Sie möglicherweise Argumente für Mitgliedsfunktionen optional machen. Wenn kein Argument angegeben wird, wäre es vorzuziehen, eine Mitgliedsvariable als Standard zu verwenden.
Betrachten Sie das folgende Beispiel:
class Object { ... void MoveTo(double speed, Point position); protected: Point initPos; Point currPos; };
Der Code versucht, die Mitgliedsvariable initPos als zuzuweisen Standardwert für den Positionsparameter in der MoveTo-Funktion:
void Object::MoveTo(double speed, Point position = initPos) { currPos = postion; }
Dieser Ansatz führt jedoch zu einer Kompilierung Fehler:
error: invalid use of non-static data member 'Object::initPos'
Das Problem besteht darin, dass Standardargumentausdrücke für Mitgliedsfunktionen ausschließlich auf Klassen- oder globalen Bereichselementen basieren müssen. Darüber hinaus muss das Standardargument in der Deklaration der Methode in der Header-Datei definiert werden.
Um dieses Problem zu beheben, können zwei Überladungen der MoveTo-Methode erstellt werden:
void Object::MoveTo(double speed) { MoveTo(speed, initPos); } void Object::MoveTo(double speed, Point position) { // Implementation here. }
Die MoveTo-Methode, die Nimmt ein einzelnes Argument an, ruft die MoveTo-Methode mit zwei Argumenten auf und übergibt den initPos-Wert als Standard.
Object object; object.MoveTo(10.0); // Calls MoveTo(10.0, initPos)
Dieser Ansatz folgt dem DRY Prinzip, indem die Implementierung von MoveTo nur einmal definiert werden darf.
Das obige ist der detaillierte Inhalt vonWie können Sie Mitgliedsvariablen als Standardargumente in C-Mitgliedsfunktionen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!