写了不少程序后,发现有很多有价值并且可以重用的库或者class,使用这些久经考验的代码对RAD很有帮助。
拿出来和大家分享一下。
出处: http://sigslot.sourceforge.net
用处:实现消息订阅和发送模式。
示例:
struct dog
{
signal1<int> bark; // 狗叫,需要发送
void beaten()
{
bark(100); // 消息产生
}
};
struct human : public has_slots<>
{
void dog_bark(int vol) {} // 响应狗叫,处理
};
int main()
{
dog d;
human man;
d.bark.connect(&man, &human::dog_bark); // 绑定
d.beaten();
d.bark.disconnect(&man);
return 0;
}
说明:当然sigslot的功能比例子远为强大,并且能支持多线程。这个库只有一个.h文件!用起来非常方便。
boost 也有自己的 signals库,架构比较类似,优点是能支持返回值,更加强大。如果说有缺点就是引用了boost很多其他的库。
下一次应该介绍 sqlite 了,一个轻量级的数据库。
拿出来和大家分享一下。
sigslot
出处: http://sigslot.sourceforge.net
用处:实现消息订阅和发送模式。
示例:
struct dog
{
signal1<int> bark; // 狗叫,需要发送
void beaten()
{
bark(100); // 消息产生
}
};
struct human : public has_slots<>
{
void dog_bark(int vol) {} // 响应狗叫,处理
};
int main()
{
dog d;
human man;
d.bark.connect(&man, &human::dog_bark); // 绑定
d.beaten();
d.bark.disconnect(&man);
return 0;
}
说明:当然sigslot的功能比例子远为强大,并且能支持多线程。这个库只有一个.h文件!用起来非常方便。
boost 也有自己的 signals库,架构比较类似,优点是能支持返回值,更加强大。如果说有缺点就是引用了boost很多其他的库。
下一次应该介绍 sqlite 了,一个轻量级的数据库。