Re: templates und vererbung
Von: Daniel Krügler (daniel.kruegler@googlemail.com) [Profil]
Datum: 01.05.2008 19:12
Message-ID: <29a55c0c-423a-4716-8ebd-dfde815be5f0@x35g2000hsb.googlegroups.com>
Newsgroup: de.comp.lang.iso-c++
Datum: 01.05.2008 19:12
Message-ID: <29a55c0c-423a-4716-8ebd-dfde815be5f0@x35g2000hsb.googlegroups.com>
Newsgroup: de.comp.lang.iso-c++
On 30 Apr., 19:10, ruebezaehler <ruebezaeh...@web.de> wrote: > Am Wed, 30 Apr 2008 17:18:23 +0200 schrieb ruebezaehler: > > ich habe ein Problem bei der Vererbung von Klassen-Templates. > > > Im Beispiel ist eine Basis-Klasse C_B_, welche nur ein oeffentliches > > Datum var enthaelt. Die Klasse C_B ist von C_B_ private abgeleitet. > > Trotzdem ist var vom Benutzer ueber C_B zugaenglich. Das gilt nicht fuer > > die Klasse C_A. Hier kann die Sichtbarkeit fuer den Benutzer von C_A > > nicht nur ueber die Sichtbarkeit von C_A_, sondern auch die Variable var > > mittels "private: / public: using C_A_::var;" gesteuert werden. > > > Hinweis: Compiler g++ (GCC) 4.1.3 > > > Kann mir jemand weiterhelfen bzw. die verschiedene Behandlung des > > Compilers erklaeren. > > Nachtrag: > > wenn man B (C_B) ohne "using" deklariert, dann verhaelt sie sich wie A > (C_A) Das Compilerverhalten bezueglich B ist ein eindeutiger Compilerfehler und sollte als solcher berichtet werden. Durch die using-Deklaration im private-Abschnitt der Klasse wird der Name "var" im privaten Bereich der Klasse eingefuehrt/deklariert. D.h. ein Benutzer der Klasse mit Nur- public-Zugriff (wie in deinem Bsp. innerhalb von main) darf auf B<..>::var nicht zugreifen, siehe [namespace.udecl]/15: "The alias created by the using-declaration has the usual accessibility for a member-declaration.[..]" Gruss aus Bremen, Daniel Krügler[ Auf dieses Posting antworten ]
