gpt4 book ai didi

c++ - 在 C++ 中实现回调

转载 作者:行者123 更新时间:2023-12-01 14:47:38 24 4
gpt4 key购买 nike

我希望能够实现一个函数,该函数将由类中的另一个函数调用,例如回调。

例如,我们有这个原型(prototype):

using func = void(__stdcall*)(int val);

然后我在一个类中定义它:
func * _func;

然后我在主文件中实现它:
void __stdcall my_func(int val) { }
...
int main() {
...
myclass._func = &my_func;

然后,从另一个函数中,我称之为:
myclass::func_call() {
...
int a = 0;
this._func(a);

所以我能够捕捉到类之外的每一个值(value)。

我怎么能这样做?

最佳答案

在 C++ 中执行此操作的 native 和惯用方式是虚函数:

//using func = void(__stdcall*)(int val);
struct Interface
{
virtual void func(int val) = 0;
};

then i define it inside a class:


//func * _func;
class Implementation : public Interface
{
void func(int val) final;
};

then i implement it in the main file:


class Client
{
public:
Client(Interface &interface) : interface(interface) {}
void func_call()
{
int a = 0;
interface.func(a);
}
private:
Interface &interface;
};

关于c++ - 在 C++ 中实现回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62292532/

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