使用成员函数作为函数指针

Jes*_*son 2 c++ member-function-pointers

我之前从未使用过函数指针,而且在使代码工作时遇到了一些麻烦.这就是我所拥有的

TestClass.h:

class TestClass
{
    public:
        void function1();
        void function2();

        void function3(void (*funcPtr)(void))
        void function4();
};
Run Code Online (Sandbox Code Playgroud)

TestClass.cpp

void TestClass::function1()
{
    //CODE
}

void TestClass::function2()
{
    //CODE
}

void TestClass::function3(void (*funcPtr)(void))
{
    //CODE
    funcPtr();
    //CODE
}

void TestClass::function4()
{
    function3(function1);
    function3(function2);
}
Run Code Online (Sandbox Code Playgroud)

这给了我错误

"获取成员函数地址的非标准形式

我试图添加*funcPtr的TestClass :: infront,但这给了我更多的错误

Jar*_*d42 7

使用成员函数指针,它应该是这样的:

void TestClass::function3(void (TestClass::*funcPtr)())
{
    //CODE
    (this->*funcPtr)();
    //CODE
}

void TestClass::function4();
{
    function3(&TestClass::function1);
    function3(&TestClass::function2);
}
Run Code Online (Sandbox Code Playgroud)

带功能指针

class TestClass
{
    public:
        static void function1(); // static added
        static void function2(); // static added

        void function3(void (*funcPtr)(void))
        void function4();
};

void TestClass::function3(void (*funcPtr)())
{
    //CODE
    funcPtr();
    //CODE
}

void TestClass::function4();
{
    function3(&TestClass::function1);
    function3(&TestClass::function2);
}
Run Code Online (Sandbox Code Playgroud)