获取函数指针到基类的受保护成员函数

时间:2014-04-08 13:43:43

标签: c++ derived-class member-function-pointers

我有一个暴露基类的受保护成员函数的类。有没有办法获得一个指向暴露函数的函数指针?

class B
{
protected:
  void foo() {}
};

class D : protected B
{
public:
  using B::foo;
};


void(D::*test)() = &D::foo; // error C2248: 'B::foo' : cannot access protected member declared in class 'D'

2 个答案:

答案 0 :(得分:2)

这有点尴尬,但是如果你不能改变原来的类,你可以创建一个派生类来给你访问:

struct E : D {
  static void (D::*fooPtr())() { return &D::foo; }
};

void(D::*test)() = E::fooPtr();

答案 1 :(得分:0)

以某种方式存在;

void foo_exposed() { foo(); } // in 'D'

但它得到了一个新名字..