我希望能够实现一个将由类中的另一个函数调用的函数,例如回调。
例如,我们有这个原型:
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;
};