[comp.lang.c++] Access of protected members thru friends

marti@ethz.UUCP (Robert Marti) (05/12/89)

Consider the following scenario:

class Base {
protected:
  int data;
// ...
};

class Derived : public Base {
friend int friendFunc(Derived d);
friend class FriendClass;
// ...
};

int friendFunc(Derived d)
{
  return d.data;		// <<<<< error:  data is protected
}

class FriendClass {
public:
  int func(Derived d);
// ...
};

int FriendClass::func(Derived d)
{
  return d.data;		// <<<<< error:  data is protected
}


cfront 1.2.1 issues two error messages "data is protected" (indicated
by <<<<< above).  Why?  It seems that since a friend of a class has
access to all members visible in that class and "inherited" protected
members are visible in derived classes, d.data should be visible and
accessible in friendFunc and FriendClass::func.
-- 
Robert Marti                      Phone:      +41 1 256 52 36
Institut fur Informationssysteme
ETH-Zentrum                       CSNET/ARPA: marti%inf.ethz.ch@relay.cs.net
CH-8092 Zurich, Switzerland       UUCP:       ...uunet!mcvax!ethz!marti