如何使用指针调用私有成员函数

How to call private member function by using a pointer

菜鸟问题:

所以有这个class

class A
{
private:
    void error(void);
public:
    void callError(void);
};

而且我想使用指针从 callError 调用错误。

我可以使用指针从 main 调用 public 函数。

int main(void)
{
    void (A::*abc)(void) = &A::callError;
    A test;

    (test.*abc)();
    return (0);
}

但是,我找不到如何使用指针从 callError 调用错误函数的方法。有小费吗? :)

向您的 class 添加一个 public 方法,returns 一个指向私有函数的指针:

class A
{
private:
    void error(void);
public:
    void callError(void);

    auto get_error_ptr() {
        return &A::error;
    }
};

int main(void)
{
    void (A::*abc)(void) = &A::callError;
    A test;

    (test.*abc)();

    void (A::*error_ptr)(void) = test.get_error_ptr();
    (test.*error_ptr)();

    return (0);
}

但我不建议在实际应用程序中实际使用这种代码,它非常混乱且容易出错。