Thread overview
Private member accessibility from private class
Jan 02, 2006
W³odzimierz Skiba
Jan 04, 2006
Bertel Brander
Jan 04, 2006
Walter Bright
January 02, 2006
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
January 04, 2006
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
January 04, 2006
"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>.