Verwenden einer Mitgliedsvariablen als Standardargument in C
Beim Erstellen von Mitgliedsfunktionen in C ist es oft wünschenswert, bestimmte Argumente optional und optional zu machen Verwenden Sie eine Mitgliedsvariable als Standardwert. Dies kann jedoch Kompilierungsfehler auslösen, wenn die Mitgliedsvariable nicht statisch ist.
Beachten Sie den folgenden Codeausschnitt:
class Object { public: void MoveTo(double speed, Point position); protected: Point initPos; Point currPos; }; void Object::MoveTo(double speed, Point position = initPos) { currPos = postion; }
Der Versuch, diesen Code zu kompilieren, führt zu der Fehlermeldung: „ungültig Verwendung des nicht-statischen Datenelements „Object::initPos“. Dies liegt daran, dass Standardargumentausdrücke nicht von Nicht-Klassenmitgliedern abhängen können.
Um dieses Problem zu beheben, müssen Sie zwei Überladungen der MoveTo-Methode verwenden:
void Object::MoveTo(double speed) { MoveTo(speed, initPos); } void Object::MoveTo(double speed, Point position) { currPos = postion; }
Die Methode mit einem Argument ruft die Methode mit zwei Argumenten auf und übergibt den Standardwert. Dies ermöglicht eine einzelne Implementierung von MoveTo und behält gleichzeitig die gewünschte Funktionalität der Verwendung einer Mitgliedsvariablen als Standard bei.
Durch die Einhaltung dieser Techniken können Sie Mitgliedsvariablen effektiv als Standardargumente in C-Mitgliedsfunktionen verwenden, ohne dass eine Kompilierung erforderlich ist Fehler.
Das obige ist der detaillierte Inhalt vonWie verwende ich eine Membervariable als Standardargument in C-Memberfunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!