如何使用指针调用私有成员函数
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);
}
但我不建议在实际应用程序中实际使用这种代码,它非常混乱且容易出错。
菜鸟问题:
所以有这个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);
}
但我不建议在实际应用程序中实际使用这种代码,它非常混乱且容易出错。