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 ]