在C++中,可以使用函数指针或函数对象来传递具有未知原型的成员函数给类。下面是两种常见的方法:
MyClass
和一个成员函数void foo(int)
,可以按以下方式传递该成员函数:MyClass
和一个成员函数void foo(int)
,可以按以下方式传递该成员函数:MemberFunctionPtr
是一个函数指针类型,它接受一个int
参数并返回void
。通过将&MyClass::foo
赋给ptr
,我们将foo
成员函数的地址存储在了函数指针中。然后,通过(obj.*ptr)(42)
调用了foo
成员函数。operator()
,并在其中调用成员函数。MyClass
和一个成员函数void foo(int)
,可以按以下方式传递该成员函数:MyClass
和一个成员函数void foo(int)
,可以按以下方式传递该成员函数:MyFunctor
是一个函数对象类,它重载了operator()
运算符,接受一个MyClass
对象和一个int
参数,并在其中调用了foo
成员函数。通过functor(obj, 42)
调用了函数对象的operator()
,从而间接调用了foo
成员函数。无论是使用函数指针还是函数对象,都可以将具有未知原型的成员函数传递给C++中的类,并在需要的地方进行调用。
领取专属 10元无门槛券
手把手带您无忧上云