Heim >Backend-Entwicklung >C++ >Wie kann ich C#-ähnliche Eigenschaften in C 11 erstellen?

Wie kann ich C#-ähnliche Eigenschaften in C 11 erstellen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 12:40:02455Durchsuche

How can I create C#-style properties in C  11?

Erzielen von Eigenschaften im C#-Stil in C 11

In C# bieten Eigenschaften eine elegante Syntax für den Zugriff auf Klassenmitgliedsvariablen mit Getter- und Setter-Methoden . In C 11 gibt es kein direktes Äquivalent zu dieser Funktion. Mit einigen Problemumgehungen ist es jedoch möglich, Eigenschaften im C#-Stil in C 11 zu simulieren.

Verwendung unbenannter Klassen

Ein Ansatz besteht darin, unbenannte Klassen zu verwenden, um die zu kapseln Eigenschaften. Dadurch können Sie Getter und Setter innerhalb der verschachtelten Klasse erstellen und gleichzeitig eine einfache Syntax für den Zugriff auf die Eigenschaft von außerhalb bereitstellen.

<code class="cpp">struct Foo
{
    class {
        int value;
        public:
            int & operator = (const int &i) { return value = i; }
            operator int () const { return value; }
    } alpha;

    class {
        float value;
        public:
            float & operator = (const float &f) { return value = f; }
            operator float () const { return value; }
    } bravo;
};</code>

Benutzerdefinierte Getter und Setter

Andere Die Option besteht darin, eigene Getter und Setter für die Klassenmitgliedsvariablen zu schreiben. Dieser Ansatz ermöglicht es Ihnen, die Getter und Setter an Ihre spezifischen Bedürfnisse anzupassen.

<code class="cpp">private:
    int _foo;
public:
    int getFoo() { return _foo; };
    void setFoo(int value) { _foo = value; };</code>

Zugriff für Inhaberklassenmitglieder

In den obigen Beispielen sind die Eigenschaften direkt zugänglich als Mitglieder der umschließenden Klasse. Wenn Sie die Eigenschaften als Mitglieder einer Halterklasse verwenden möchten, können Sie den Code erweitern, um eine Zugriffsschicht für Halterklassenmitglieder einzuschließen. Diese Ebene würde den Zugriff auf die Eigenschaften über die Halterklasse ermöglichen.

Das obige ist der detaillierte Inhalt vonWie kann ich C#-ähnliche Eigenschaften in C 11 erstellen?. 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