在C++中实现回调

  • 本文关键字:回调 实现 C++ c++
  • 更新时间 :
  • 英文 :


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

例如,我们有这个原型:

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);

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

我该怎么做?

在C++中执行此操作的本地和惯用方法是虚函数:

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

然后我在类中定义它:

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

然后我在主文件中实现它:

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

最新更新