Код
class Base
{
protected:
typedef void (Base::*PBaseFunc)();
void f1();
void doAction(PBaseFunc func);
};
class Derived : public Base
{
protected:
void func()
{
doAction(&Base::f1);
}
};
Выдает ошибку:
doAction(&Base::f1);
^
"main.cpp",139 Error[Pe410]: protected function "Base::f1" is not accessible through a "Base" pointer or object.
Если в Base f1 сделать public - все ок. Не пойму, почему protected-функцию нельзя вызвать через указатель в производном классе.