在C ++中获取私有成员函数的函数指针

时间:2016-07-12 02:37:52

标签: c++ pointers

有没有办法获取类

中私有的成员函数的函数指针
var myObject = {
  a: {
    one: 1,
    two: 2,
    three: 3
  },
  b: {
    four: 4,
    five: 5,
    six: 6
  }
};
$.each(myObject, function(a, b) {
  alert(a + b);
})

在vs 2012 c ++编译器中进行编译会导致以下错误

class A
{
public:
    void callMe()
    {
        cout<<__FUNCTION__<<endl;
    }

private:
    void fooMem()
    {
        cout<<__FUNCTION__<<endl;
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    auto fp = &A::fooMem;

    return 0;
}

我对一个类似的问题进行了惊人的solution调查(虽然我不太清楚这实际上是如何工作的,如果有人可以解释这也会很棒),在这里我希望会员的地址不要调用它。

我要求提供地址的原因是我将使用不同的实现来修补此功能。

这样的课程是不可修改的,但如果可以帮助实现这一点,我可以继承。

1 个答案:

答案 0 :(得分:-1)

由于您无法修改原始类,因此简单地继承该类并在公共成员空间中创建该函数的副本会更容易。

我尝试了这个,它按预期工作,至少用g ++:

$ ./a.out
This is aFunction
This is also anotherFunction, but it's accessible!

当我运行此代码时,我得到以下输出:

composer require "mongodb/mongodb=^1.0.0"

证明编译器了解要使用哪个版本的anotherFunction。