Heim >Backend-Entwicklung >C++ >Wie können Sie Mitgliedsvariablen als Standardargumente in C-Mitgliedsfunktionen verwenden?

Wie können Sie Mitgliedsvariablen als Standardargumente in C-Mitgliedsfunktionen verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-11 08:58:03680Durchsuche

How Can You Use Member Variables as Default Arguments in C   Member Functions?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn