[gelöst] [C++03] - Zugriffsrechte einer Nested Class
-
Hi Forum,
ich habe mal eine Frage zu Code, der mich jetzt doch ziemlich überrascht hat:
class A { public: A() : _x(20) {} class X { public: int f(A* a) { return a->_x; } }; private: int _x; };Warum darf hier A::X::f auf private member von A zugreifen? Zumindest fressen g++, comeau (online tryitout) und clang das.
Ich habe mal im Standard gewühlt zu nested classes und member access control, aber der richtige Absatz wollte sich mir nicht zeigen. Im Gegenteil legt 11.8 "The members of a nested class have no special access to members of an enclosing class […]" mir irgendwie das Gegenteil nahe.

Kann mich mal jemand bitte mit dem entsprechenden Paragraphen aufschlauen?
Danke & Gruß

-
Laut Standard ist das in Ordnung.
Ist mMn auch sinnvoll.
-
Hmm...in der Tat sollte das nicht funktionieren, wenn ich mir den alten Standard anschaue.
Evtl. ist das allerdings auch ein (offensichtlicher) Fehler im Standard und wurde deswegen von den Compilerherstellern nicht implementiert?!In C++11 wurde die entsprechende Stelle geändert...
Siehe hier: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
-
Stimmt, in den 11er hatte ich noch nicht geschaut, danke für die Antwort.
Zumindest ist es schonmal gut zu wissen, dass ich dann doch nicht zu blöd zum Lesen war. Das Code-Beispiel im 2003er sagt ja auch explizit "Error" dazu.
-
Hehe, tut mir Leid! Ich dachte, das müsse doch in beiden Standards gleich sein und habe nur in den N3337-er geguckt.
