获取指向基类受保护成员函数的函数指针
Posted
技术标签:
【中文标题】获取指向基类受保护成员函数的函数指针【英文标题】:getting function pointer to protected member function of base class 【发布时间】:2014-04-08 13:43:42 【问题描述】:我有一个类公开基类的受保护成员函数。有没有办法获得指向暴露函数的函数指针?
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'
【问题讨论】:
【参考方案1】:有点尴尬,但是如果你不能改变原来的类,你可以做一个派生类给你访问权限:
struct E : D
static void (D::*fooPtr())() return &D::foo;
;
void(D::*test)() = E::fooPtr();
【讨论】:
【参考方案2】:以某种方式存在;
void foo_exposed() foo(); // in 'D'
但它有一个新名字..
【讨论】:
不必:void foo() B::foo(); 。这确实是一个解决方案,但我不想更改我的原始代码。以上是关于获取指向基类受保护成员函数的函数指针的主要内容,如果未能解决你的问题,请参考以下文章