Hi,

the following code doesn't compile on Gnu g++ (4.2.4)

Any ideas why?

the marked "POINT 1" below, is member function of derived
class. It should have access right to c0.

Topi

*******


class c1a;
class c1b;

class c0
{
  friend class c1a;
protected:
  int prot;
private:
  int priv;
public:
  int pub;
  void mf0()
  {
    c0 *k=this;
    k->pub;
    k->prot;
    k->priv;
  }
};

class c1a:public c0
{
public:
  void mf1(void)
  {
    c0 *k=this;
    k->pub;
    k->prot;
    k->priv;
  }
};

class c1b:public c0
{
public:
  void mf1(void)
  {
    c0 *k=this;
    k->pub;
    k->prot;   // POINT 1. this point doesn't compile.
    k->priv;   // POINT 2. this is ok not to compile, no friend.
  }
};

main()
{
  c1a v1a;
  v1a.mf1();
  v1a.mf0();

  c1b v1b;
  v1b.mf1();
  v1b.mf0();  
}

Reply via email to