gpt4 book ai didi

c++ - 如何使用结构内部的函数指针调用私有(private)函数?

转载 作者:行者123 更新时间:2023-11-28 05:05:46 24 4
gpt4 key购买 nike

我在下面给出我的示例代码。我想使用函数指针从公共(public)函数 c::PubFn 调用 c::LocFn2。当我注释 pp[1].fp(); 行时,代码完美运行。请帮助我。

#include <iostream>

using namespace std;

class c
{
public:
void PubFn();
private:
struct p
{
int a;
int b;
int (c::*fp)();
};
static const p pp[];

int LocFn1();
int LocFn2();
};

void c::PubFn() {
cout << "Val = "<< pp[1].a << "\n"; //It prints 3 correctly.
pp[1].fp(); //Here I wanna call c::LocFn2 using the function pointer.
}

int c::LocFn1() {
cout << "This is loc fn1\n";
return 0;
}
int c::LocFn2() {
cout << "This is loc fn2\n";
return 0;
}

const c::p c::pp[] = { {1, 2, &c::LocFn1}, {3, 4, &c::LocFn2} };

int main()
{
c obj;

obj.PubFn();
}

最佳答案

使用指向成员的指针运算符->*

(this->*(pp[1].fp))();

额外的括号是必要的,因为函数调用运算符比指向成员的运算符具有更高的优先级。

关于c++ - 如何使用结构内部的函数指针调用私有(private)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44816546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com