Heim > Backend-Entwicklung > C++ > Wie können Sie Klassenvorlagen in C als Freunde deklarieren?

Wie können Sie Klassenvorlagen in C als Freunde deklarieren?

Linda Hamilton
Freigeben: 2024-11-14 13:50:02
Original
258 Leute haben es durchsucht

How Can You Declare Class Templates as Friends in C  ?

Klassenvorlagen als Freunde deklarieren: Ein tieferer Einblick

In C ist es möglich, Klassen als Freunde für andere Klassen zu definieren und privaten Mitgliedern unabhängig von der Kapselung Zugriff zu gewähren . Beim Umgang mit Klassenvorlagen ist es jedoch von entscheidender Bedeutung, die zugrunde liegenden Freundschaftsbeziehungen zu verstehen.

Betrachten Sie den Beispielcode:

template<class T> class BE {
    T *data;
    BE *l, *r;
public:
    template<class U> friend class BT;
};

template<class T> class BT {
    BE<T> *root;
public:
...
private:
...
};
Nach dem Login kopieren

Dieser Code definiert eine Klasse BE, die Baumelemente darstellt, und eine Klasse BT, die diese darstellt ein binärer Baum. Ursprünglich wurde versucht, die Freundesklasse wie folgt zu deklarieren:

template<class T> friend class BT;
Nach dem Login kopieren

Dieser Ansatz schlug jedoch fehl. Um zu verstehen, warum, ist es wichtig zu erkennen, dass sich Vorlagenparameter nicht gegenseitig überschatten können. In verschachtelten Vorlagen muss jede Ebene eindeutige Vorlagenparameternamen haben.

Bedenken Sie im Gegensatz dazu diese Deklaration:

template<class T> class BE {
    template<class U> friend class BT<U>;
};
Nach dem Login kopieren

Dies bedeutet, dass BT ein Freund von BE ist, unabhängig von den Vorlagenargumenten von BT. Jede Instanz von BT, unabhängig von der Art, die sie speichert, wird ein Freund von BE sein.

Alternativ, wenn die folgende Deklaration verwendet wird:

template<class T> class BE {
    friend class BT<T>;
};
Nach dem Login kopieren

Dies bedeutet, dass BT nur ein ist Freund von BE, wenn das Vorlagenargument von BT mit dem von BE übereinstimmt. In diesem Fall ist beispielsweise BT wäre ein Freund von BE, aber nicht von BE oder BE.

Im Fall des Binärbaumbeispiels wird die Freundklasse als Freundklasse BT; würde ausreichen, um die gewünschte Beziehung zwischen BT und BE herzustellen.

Das obige ist der detaillierte Inhalt vonWie können Sie Klassenvorlagen in C als Freunde deklarieren?. 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