gpt4 book ai didi

c++ - 如何使用 std::function 或 Boost 在 C++ 中实现类成员指针?

转载 作者:行者123 更新时间:2023-11-30 03:58:47 25 4
gpt4 key购买 nike

我想在 C++ 中实现一个面向对象的函数指针(类似于 C# 中的委托(delegate))。

我写了一个示例代码,它使用“MagicFunctionPainter”作为最终类的占位符:

class A
{
public:
MagicFunctionPointer p;
void fireEvent()
{
p();
}
};

class B
{
public:
void init(A* a)
{
a->p = &onEvent;
}
void onEvent()
{
// in a real-world app, it'd modify class variables, call other functions, ...
}
};

std::function 或 Boost::Signals2 支持吗?是否有任何其他图书馆支持这种情况?

提前致谢!

最佳答案

p 的类型应该是:

std::function<void(void)> // a function taking no arguments, returning nothing

B::init 中创建一个这种类型的对象:

std::bind(&B::onEvent, this);

关于c++ - 如何使用 std::function 或 Boost 在 C++ 中实现类成员指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27267019/

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