gpt4 book ai didi

c++ - ISO C++ : How to design events?

转载 作者:行者123 更新时间:2023-11-30 02:07:23 25 4
gpt4 key购买 nike

我知道用 C++ 设计事件的两种方法:

1:使用回调:

typedef void (*callback_type)(void);

class my_class
{
public:

my_class(callback_type c)
{
m_callback = c;
}

void raise_event()
{
m_callback();
}

private:

callback_type m_callback;
};

2:使用虚拟方法:

class my_class
{
public:

virtual void my_event() = 0;

void raise_event()
{
my_event();
}
};

class main_class : public my_class
{
public:

virtual void my_event()
{
// Handle EVENT.
}
};

有没有其他的事件设计方式或想法?

在 ISO C++ 中设计事件的最佳模式是什么?

最佳答案

您应该使用 Boost.Signals 或 Boost.Signals2。
要模拟这些,您可以使用 Boost.Function 的/std::function 的集合。
为了模拟这些,您可以使用类型删除(因此是虚函数路由)来提高灵 active 。

请注意,这些都不是微不足道的,因此您应该尽可能尝试使用现有的解决方案。

关于c++ - ISO C++ : How to design events?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944488/

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