Heim > Backend-Entwicklung > C++ > Hauptteil

Warum erfordert GCC expliziten Mitgliedszugriff für Mitglieder der Vorlagenbasisklasse?

DDD
Freigeben: 2024-11-01 10:52:02
Original
849 Leute haben es durchsucht

Why Does GCC Require Explicit Member Access for Template Base Class Members?

Strikte Durchsetzung der Abhängigkeit von Vorlagenargumenten durch GCC

Der vorgestellte Code wirft ein Problem auf, das bei der Verwendung von GCC auftritt, jedoch nicht mit Visual Studio. Der folgende Code:

<code class="cpp">template <typename T> class A {
    public:
        T foo;
};

template <typename T> class B: public A<T> {
    public:
        void bar() { cout << foo << endl; }
};
Nach dem Login kopieren

kann nicht mit GCC kompiliert werden, wird aber erfolgreich mit Visual Studio kompiliert. Der Fehler fordert den Entwickler auf, dies hinzuzufügen-> auf den Ausdruck, um auf das Mitglied foo in der Methodenleiste zuzugreifen.

Dieses Verhalten ist auf die strikte Einhaltung der C-Spezifikationen durch GCC zurückzuführen. Frühere Versionen von GCC leiteten den Mitgliedszugriff von Vorlagenbasisklassen ab, indem sie diese analysierten. ISO C hält diese Schlussfolgerung jedoch für potenziell problematisch und hat sie abgelehnt.

Die Lösung in diesem Szenario besteht darin, mithilfe von this-> explizit auf das Mitglied foo zu verweisen. oder um die Basisklasse explizit anzugeben, wie im folgenden Beispiel gezeigt:

<code class="cpp">template <typename T> class A {
    public:
        T foo;
};

template <typename T> class B: public A<T> {
    public:
        void bar() { cout << A<T>::foo << endl; }
};</code>
Nach dem Login kopieren

Auf diese Weise kann GCC den Typ der Basisklasse bestimmen und den Mitgliedszugriff entsprechend auflösen.

Das obige ist der detaillierte Inhalt vonWarum erfordert GCC expliziten Mitgliedszugriff für Mitglieder der Vorlagenbasisklasse?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!