闲人草堂

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年6月9日

摘要: 这是我这几天倒腾wii的一点心得,贴出来晒晒,不足之处请大家批评指教啊。需求:有一个类Base,Base::fun()在不同平台下的实现不同(可能依托于第三方库),问题是,如何才能让我在调用Base的时候,不用区分平台,即达到一次coding,处处可编译通过?1 class Base2 {3 public:4 void fun();5 };解法1: 最简单的方法,就用这套接口在不同平台上写好实现,编译成静态库或者动态库,然后一个头文件,一个lib走遍天下。解法2: 稍微折腾一点,使用抽象类: 1 class Base 2 { 3 public: 4 virtual void fun(); 5 阅读全文
posted @ 2011-06-09 23:29 闲人草堂 阅读(841) 评论(2) 推荐(0) 编辑

摘要: 今天忙活了半天,结果发现罪魁祸首在使用了auto_ptr。auto_ptr本身不含有赋值语义,所以在它赋值给别人(例如传参时),实际发生的是控制权的转移。1 auto_ptr<TYPE> A,B;2 A = B;第二行执行完毕后,B的地址为0;这就是智能指针auto_ptr的缺陷。倘若遇到类似的情况,还是用boost的shared_ptr吧。另外转载一篇关于auto_ptr的文章,供自己学习。http://blog.csdn.net/normallife/archive/2011/02/23/6202930.aspx因为std::auto_ptr是转移语义,而STL容器的元素必须是 阅读全文
posted @ 2011-06-09 20:12 闲人草堂 阅读(2716) 评论(0) 推荐(0) 编辑