[英]ISO C++: How to design events?
我知道在C ++中设计事件的两种方法:
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;
};
virtual
方法: 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
的集合。
要模拟这些,您可以使用类型擦除(因此虚函数路由)以获得灵活性。
请注意,这些都不是太微不足道,所以如果可能的话,您应该尝试使用现有的解决方案。
设计将取决于您的要求的具体情况。 有关一个很好的例子,请参阅ACE Reactor 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.