gpt4 book ai didi

c++ - 类函数指针作为静态函数中的参数

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:46 25 4
gpt4 key购买 nike

我已经编写了我的代码的简化版本,以说明我的问题。在我的程序中,很多其他的东西都在代码中,这就是为什么我需要在一个类中有一些函数。我不知道如何定义参数,以便最终调用 foo 的 f2。

如果 f0 是解决问题的唯一方法,我可以在 testClass 中使用 f0,但我也不知道如何编写它。

#include <iostream>
using namespace std;

class testClass {
public:
void f1();
void f2(int i);

} foo;

void f0(void (*f)(int)) {
(*f)(1337); // f = a pointer to f2, which is sent from f1
}

void testClass::f2(int i) {
cout << i;
}

void testClass::f1() {
f0(&f2);
}

int i;
int main() {
foo.f1(); // I want foo.f1 to call f0 which should call foo.f2()
cin >> i;
}

如果我要删除 testClass::和 foo.,它将起作用。但是既然我做不到,我应该如何正确定义f0中的参数呢?我应该如何在 f1 中正确调用 f0?

请帮忙!

最佳答案

非静态成员函数需要一个“this”对象才能被调用,它们不能像顶级函数或静态成员函数那样被调用。因此,您需要为 f0 添加一个额外参数,并调整您的语法以进行成员函数调用。

void f0(testClass *obj, void (testClass::*f)(int)) {
(obj->*f)(1337);
}

更改 f1 以也传递 this

void testClass::f1() {
f0(this, &testClass::f2);
}

关于c++ - 类函数指针作为静态函数中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28387789/

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