Heim > Backend-Entwicklung > C++ > Hauptteil

Wie greife ich auf geschützte Mitgliedsvariablen in geerbten Klassen in C-Vorlagen zu?

Mary-Kate Olsen
Freigeben: 2024-10-30 09:23:03
Original
956 Leute haben es durchsucht

How to Access Protected Member Variables in Inherited Classes in C   Templates?

Vorlagen: Sichtbarkeit von Mitgliedsvariablen der übergeordneten Klasse in geerbten Klassen

In C-Vorlagen sind Mitgliedsvariablen einer übergeordneten Klasse möglicherweise nicht sichtbar standardmäßig geerbte Klassen. Dies kann beim Zugriff auf diese Variablen zu Kompilierungsfehlern führen.

Betrachten Sie das folgende Beispiel:

<code class="cpp">template <class elemType>
class arrayListType {
protected:
    elemType *list;
    int length;
};

template <class elemType>
class unorderedArrayListType: public arrayListType<elemType> {
    void insertAt(int, const elemType&);  // Function that uses 'list' and 'length'
};</code>
Nach dem Login kopieren

In der geerbten Klasse unorderedArrayListType führt der direkte Zugriff auf die Liste und Länge der geschützten Variablen zu Fehlern wie z da „‚Länge‘ in diesem Bereich nicht deklariert wurde“. Um dieses Problem zu lösen, müssen wir diese Variablen explizit innerhalb der abgeleiteten Klasse deklarieren.

Es gibt zwei Hauptansätze dafür:

  1. Verwenden Sie „this ->" Präfix:

    Stellen Sie jeder Mitgliedsvariablen dieses-> voran, z. B.:

    <code class="cpp">void insertAt(int location, const elemType& insertItem) {
        for (int i = this->length; i > location; i--)
            this->list[i] = this->list[i - 1];
    
        this->list[location] = insertItem;
        this->length++;
    }</code>
    Nach dem Login kopieren
  2. Verwendungsdeklarationen:

    Fügen Sie Deklarationen für die Mitgliedsvariablen in den privaten Abschnitt der abgeleiteten Klasse ein, z. B.:

    <code class="cpp">class unorderedArrayListType: public arrayListType<elemType> {
    private:
        using arrayListType<elemType>::length;  // Declare 'length' explicitly
        using arrayListType<elemType>::list;   // Declare 'list' explicitly
    
    public:
        void insertAt(int, const elemType&);
    };</code>
    Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie greife ich auf geschützte Mitgliedsvariablen in geerbten Klassen in C-Vorlagen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage