Topic: Protected and member fct ptrs


Author: loic.actarus.joly@numericable.fr
Date: Mon, 9 Jan 2006 17:29:14 CST
Raw View
Hello, and happy new year !

I recently came upon some code like this:

class A
{
protected:
 int f();
};

class B : public A
{
 typedef int(A::*fptr)();
 fptr p;
 int g()
 {
  //p = &A::f;
  p = &B::f;
 }
};

If I remove the comment, I get a compilation error, which is normal
according to the standard :

11.5  Protected member access
When a friend or a member function of a  derived  class  references  a
protected nonstatic member of a base class, an access check applies in
addition  to  those  described  earlier  in this clause.[...] If  the
access is to form a pointer to member, the nested-name-specifier shall
name the derived class (or any class derived from that class).

I just wonder what can be the reason of this rule. I tried looking in
the D&E, without success, so I come to you in hope of some explanation.

Best regards,

--
Lo   c Joly


---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html                       ]