Great library: sigslot

2007-02-13 12:48 c++, RAD, sigslot, pattern

写了一些程序后,发现有很多有价值并且可以重用的库或者 class,使用这些久经考验的代码对 RAD 很有帮助。拿出来和大家分享一下。

struct dog {
  signal1 bark; // 狗叫,需要发送,以便主人处理
  void starvation() {
     bark(100); // 消息产生
  }
};
   
struct human : public has_slots {
   void dog_bark(int vol) {
    // feed it
   }
};
   
int main() {
   dog d;
   human man;
   d.bark.connect(&man, &human::dog_bark); // 绑定
   
   d.starvation();
   
   d.bark.disconnect(&man);
   return 0;
}
  • 说明:当然 sigslot 的功能比例子远为强大,并且能支持多线程。这个库只有一个.h文件!用起来非常方便。

boost 也有自己的signals库,用法比较类似,优点是能支持返回值,更加强大。 如果说有缺点就是引用了 boost 很多其他的库。