gpt4 book ai didi

c++ - 如何使用参数将函数从 1 个结构传递到另一个结构中的另一个函数

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

我正在学习将函数作为参数传递的概念。

首先我试过传递一个“自由函数?” (不属于任何类或结构的函数)使用此指针 void(*Func)(int) 到另一个自由函数并且它起作用了。

其次,free function to a function belong to a struct using the same pointer, also worked.

但是当我试图将结构中的一个函数传递给具有相同指针的不同结构中的另一个函数时,它提示错误。

这是我的代码:

#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>

using namespace std;

struct A {
void Func_A (void (*Func)(int)) {
(*Func)(5);
}
};

struct B {
void Func_B (int a) {
cout<<a;
}
};

int main () {
A a;
B b;
a.Func_A(b.Func_B);
char key = getch();
return 0;
}

这里是错误提示:

[Error] no matching function for call to 'A::Func_A(<unresolved overloaded function type>)'

最佳答案

要传递非静态成员函数,语法略有不同。这是您的原始代码,经过修改以显示:

#include <iostream>

struct B {
void Func_B (int a) {
std::cout << a;
}
};

struct A {
void Func_A (void (B::*Func)(int), B &b) {
(b.*Func) (5);
}
};

int main () {
A a;
B b;
a.Func_A (&B::Func_B, b);
return 0;
}

请注意 Func_A 的不同函数签名以及调用它时必须传递类 B 的实例这一事实。

Live demo

很遗憾您不能使用 C++11。 std::function 使这变得更简单和更通用。

关于c++ - 如何使用参数将函数从 1 个结构传递到另一个结构中的另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55705750/

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