boost相关小知识(长期顶置更新)

2.boost throw_exception unresolved

在项目中(windows VS环境)增加了一些boost库,导致一个链接报错,

throw_exception unresolved (link error)

可以修改vs的工程属性,/EH 和 /GX属性

修改方法见:

http://msdn.microsoft.com/zh-cn/library/1deeycx5.aspx

http://msdn.microsoft.com/zh-cn/library/d42ws1f6(v=vs.80).aspx

1.boost::noncopyable

nonycopyable是一个可以通过继承来防止你自己的类拷贝构造或者拷贝赋值的类。有些复杂对象,并没有明确的拷贝构造/拷贝赋值函数,当你使用隐性的拷贝构造/拷贝赋值时,可能会出现一些不必要的bug。

boost::noncopyable将构造和析构函数设置为protected,子类可以调用,使得子类调用默认构造函数时不至于编译不过。将拷贝构造/拷贝赋值函数设置为private,子类没有定义自己的拷贝构造/拷贝赋值函数时,是无法拷贝构造和等号赋值的。

一般都是私有继承的:

class my_class : private boost::noncopyable

PS:也有用public继承的,这个其实就是继承的特性了。而noncopyable主要是防止拷贝构造/赋值,所以private继承和public继承差别不是很大。stackoverflow上也是如是说。

// to be continued


NickYang

NickYang

无知一码农,现居住于上海,从事游戏服务器端开发
http://www.cppfans.org


Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注