Heim >Backend-Entwicklung >C++ >Kann ich Mitgliedsvariablen als Standardargumente in C-Methoden verwenden?

Kann ich Mitgliedsvariablen als Standardargumente in C-Methoden verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-14 14:37:01631Durchsuche

Can I Use Member Variables as Default Arguments in C   Methods?

Verwenden von Mitgliedsvariablen als Standardargumente in C

Einführung

Beim Erstellen einer Klasse mit Methoden, die mehrere Argumente akzeptieren, kann es von Vorteil sein, diese zu erstellen einige Argumente optional. Mithilfe der Standardargumentfunktion können Sie einen Standardwert für ein Argument festlegen, das verwendet werden kann, wenn vom Clientcode kein Wert bereitgestellt wird.

Problem: Verwendung nichtstatischer Mitgliedsvariablen als Standardargumente

In Ihrem Fall haben Sie versucht, eine Mitgliedsvariable (initPos) als Standardargument für Ihre MoveTo-Mitgliedsfunktion zu verwenden. Der Compiler gab jedoch einen Fehler aus, der auf eine ungültige Verwendung eines nicht statischen Datenelements hinweist.

Problemanalyse

Auf Elementvariablen kann im Gültigkeitsbereich der Methode standardmäßig nicht zugegriffen werden, da sie als Teil betrachtet werden vom Zustand des Objekts und nicht vom Kontext der Methode. Daher können Argumente in Mitgliedsfunktionen standardmäßig nur von klasseninternen oder globalen Bereichselementen abhängen.

Lösung: Methodenüberladung

Um dieses Problem zu beheben, müssen Sie auf Methodenüberladung zurückgreifen . Durch das Überladen von Methoden können Sie mehrere Versionen derselben Methode mit unterschiedlichen Signaturen erstellen. So implementieren Sie es in Ihrem Code:

// Object.h
class Object
{
public:
    ...
    void MoveTo(double speed);
    void MoveTo(double speed, Point position);

protected:
    Point initPos; 
    Point currPos;

};
// Object.c
void Object::MoveTo(double speed)
{
    MoveTo(speed, initPos);
}

void Object::MoveTo(double speed, Point position)
{
    // Everything is done here.
}

Durch die Definition zweier Versionen der MoveTo-Methode können Sie effektiv ein Standardargument bereitstellen, ohne sich direkt auf die Mitgliedsvariable zu verlassen. Die MoveTo(double)-Methode ruft die MoveTo(double, Point)-Methode mit dem initPos-Wert als zweitem Argument auf, sodass Sie die gewünschte Funktionalität beibehalten und Compilerfehler vermeiden können.

Das obige ist der detaillierte Inhalt vonKann ich Mitgliedsvariablen als Standardargumente in C-Methoden 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