Heim > Backend-Entwicklung > C++ > Wie können geerbte Klassen auf geschützte Variablen in übergeordneten Vorlagenklassen in C zugreifen?

Wie können geerbte Klassen auf geschützte Variablen in übergeordneten Vorlagenklassen in C zugreifen?

Mary-Kate Olsen
Freigeben: 2024-12-06 20:16:12
Original
585 Leute haben es durchsucht

How Can Inherited Classes Access Protected Variables in Templated Parent Classes in C  ?

Zugriff auf geerbte Variablen aus der übergeordneten Klasse mit Vorlagen

Der bereitgestellte Codeausschnitt veranschaulicht ein Szenario, in dem die geerbte Klasse Bar versucht, auf geschützte Variablen ihrer Klasse zuzugreifen übergeordnete Klasse Foo, eine auf Vorlagen basierende Klasse. Allerdings generiert der Compiler Fehler, was zu Verwirrung darüber führt, ob der Compiler den Standard einhält.

Gemäß dem C-Standard gelten nicht qualifizierte Namen innerhalb einer Vorlage als nicht abhängig und müssen bei der Definition der Vorlage aufgelöst werden . Da die spezialisierten Basisklassenvorlagen während der Vorlagendefinition möglicherweise nicht verfügbar sind, führen nicht aufgelöste, nicht qualifizierte Namen zu Fehlern.

Dies gilt sowohl für Variablen als auch für Funktionen, die in der Basisklasse deklariert sind, wie im Beispiel zu sehen ist, auf das Bar zugreifen kann a Verwendung qualifizierter Namen oder Verwendung von Deklarationen. Letzteres ermöglicht uneingeschränkten Zugriff innerhalb der abgeleiteten Klasse und behebt den ursprünglichen Fehler.

Zum Beispiel wird das Problem durch die folgenden Codeänderungen behoben:

template<class T>
int Bar<T>::Perna(int u) {
  int c = Foo<T>::a * 4;  // Qualified name
  c = this->a * 4;        // Pointer to own instance
  using Foo<T>::a;
  c = a * 4;               // Using declaration
}
Nach dem Login kopieren

Durch Klärung der Suchregeln und Bereitstellung alternativer Lösungen Diese Erklärung unterstreicht die Nuancen der Vorlagenauflösung und hilft Entwicklern, die Gründe für das Verhalten des Compilers zu verstehen.

Das obige ist der detaillierte Inhalt vonWie können geerbte Klassen auf geschützte Variablen in übergeordneten Vorlagenklassen in C zugreifen?. 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