This has been changed since 3.4.0 and is noted in the last bullet of the C++ changes: http://gcc.gnu.org/gcc-3.4/changes.html corey On 7/12/05, Paul Dubuc <pdubuc@xxxxxxx> wrote: > This code will compile with g++ 3.3.4, but 3.4.4 gives me the following error: > > Test.cc: In member function `const char* Derived::getCharge() const': > Test.cc:18: error: `char* Base::makeCharge_(const char*) const' is protected > Test.cc:31: error: within this context > > Why can't the Derived class use a pointer to it's Base class' protected member > function? Is this a bug in 3.4.4, or is this no longer allowed? > > Help! > > Here's the code: > > class Base { > > protected: > > const char * getAttr_(unsigned char type, > char * (Base::*pf)(const char *) const) const; > > char * makeCharge_(const char *) const; > }; > > const char * Base::getAttr_(unsigned char type, > char * (Base::*pf)(const char *) const) const > { > return 0; > } > > char * Base::makeCharge_(const char * ptr) const > { > return 0; > } > > class Derived : public Base { > > public: > > const char * getCharge() const; > }; > > const char * Derived::getCharge() const > { > return(getAttr_(0, &Base::makeCharge_)); > } > > > -- > Paul M. Dubuc > > "It is not enough to do your best; you must know what to do, and THEN do your > best." -- W. Edwards Deming >