www.digitalmars.com         C & C++   DMDScript  

c++ - Private member accessibility from private class

reply "Włodzimierz Skiba" <abx abx.art.pl> writes:
Hi!

Using 8.45 for code:

  class tmPart {
    private:
      static char sEndl;
      struct Endl {
        char mEndl;
        Endl(char eol) {mEndl = sEndl; sEndl = eol;};
        ~Endl() {sEndl = mEndl;};
    };
  };

I'm getting:

  test.cpp(6) : Error: member 'tmPart::sEndl' of class 'tmPart' is not
accessible
  test.cpp(7) : Error: member 'tmPart::sEndl' of class 'tmPart' is not
accessible

I'm not sure whether this should be expected or not. Is that fine? Up to now I 
tested VC, Borland and GCC and they accept it.

Great to see another year with DMC!

ABX
Jan 02 2006
parent reply Bertel Brander <bertel post4.tele.dk> writes:
Włodzimierz Skiba wrote:
 Using 8.45 for code:
 
   class tmPart {
     private:
       static char sEndl;
       struct Endl {
         char mEndl;
         Endl(char eol) {mEndl = sEndl; sEndl = eol;};
         ~Endl() {sEndl = mEndl;};
     };
   };
 
 I'm getting:
 
   test.cpp(6) : Error: member 'tmPart::sEndl' of class 'tmPart' is not
accessible
   test.cpp(7) : Error: member 'tmPart::sEndl' of class 'tmPart' is not
accessible
 
 I'm not sure whether this should be expected or not. Is that fine? Up to now I 
 tested VC, Borland and GCC and they accept it.

The C++ standard states: "11.8 Nested classes [class.access.nest] The members of a nested class have no special access to members of an enclosing class, nor to classes or functions that have granted friendship to an enclosing class; the usual access rules (clause 11) shall be obeyed. The members of an enclosing class have no special access to members of a nested class; the usual access rules (clause 11) shall be obeyed." I think DMC is right. /b
Jan 03 2006
parent "Walter Bright" <newshound digitalmars.com> writes:
"Bertel Brander" <bertel post4.tele.dk> wrote in message 
news:dpf7hn$1i60$1 digitaldaemon.com...
 I think DMC is right.

Thanks for doing the research on this. It's nice to be right <g>.
Jan 03 2006