首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将具有未知原型的成员函数传递给C++中的类?

在C++中,可以使用函数指针或函数对象来传递具有未知原型的成员函数给类。下面是两种常见的方法:

  1. 使用函数指针:
    • 首先,定义一个函数指针类型,该函数指针类型与成员函数的原型相匹配。
    • 然后,将成员函数的地址赋给函数指针。
    • 最后,通过函数指针调用成员函数。
    • 例如,假设有一个类MyClass和一个成员函数void foo(int),可以按以下方式传递该成员函数:
    • 例如,假设有一个类MyClass和一个成员函数void foo(int),可以按以下方式传递该成员函数:
    • 在这个例子中,MemberFunctionPtr是一个函数指针类型,它接受一个int参数并返回void。通过将&MyClass::foo赋给ptr,我们将foo成员函数的地址存储在了函数指针中。然后,通过(obj.*ptr)(42)调用了foo成员函数。
  • 使用函数对象(Functor):
    • 首先,定义一个函数对象类,该类重载了函数调用运算符operator(),并在其中调用成员函数。
    • 然后,创建函数对象并将其传递给需要调用成员函数的地方。
    • 例如,假设有一个类MyClass和一个成员函数void foo(int),可以按以下方式传递该成员函数:
    • 例如,假设有一个类MyClass和一个成员函数void foo(int),可以按以下方式传递该成员函数:
    • 在这个例子中,MyFunctor是一个函数对象类,它重载了operator()运算符,接受一个MyClass对象和一个int参数,并在其中调用了foo成员函数。通过functor(obj, 42)调用了函数对象的operator(),从而间接调用了foo成员函数。

无论是使用函数指针还是函数对象,都可以将具有未知原型的成员函数传递给C++中的类,并在需要的地方进行调用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券