繁体   English   中英

ISO C ++:如何设计事件?

[英]ISO C++: How to design events?

我知道在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:使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM