用G++编译项目的时候发生标题上的错误,原因是,这是c++ 11标准的。在给g++传递命令行的时候加上-std=c++0x就行了。还需要在源码中#include我的cmakelists里面要这样改: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x...
分类:
其他好文 时间:
2014-09-28 12:49:32
阅读次数:
1526
boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针boost::shared_ptr的管理机制其实并不复杂,就是对所管理的对象进行...
分类:
其他好文 时间:
2014-09-24 00:23:55
阅读次数:
250
多线程版Libevent//保存线程的结构体struct LibeventThread{ LibEvtServer* that; //用作传参 std::shared_ptr spThread; // 线程 struc...
分类:
编程语言 时间:
2014-09-14 01:21:26
阅读次数:
1197
条款13:以对象管理资源
使用RAII,获得资源后立刻放进管理对象,管理对象运用析构函数确保资源被释放。
为防止资源泄露,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源。
两个常被使用的RAII类是tr1::shared_ptr和tr1::auto_ptr。前者通常是较佳选择,因为其拷贝行为比较直观。若选择auto_ptr,复制动作会使被复制物指向null.
条款14...
分类:
编程语言 时间:
2014-08-22 16:22:49
阅读次数:
250
13.27 定义使用引用计数版本的HasPtr#include#include#includeusing namespace std;class HasPtr{public: HasPtr(const string &s=string()):ps(new string(s)),i(0),use...
分类:
其他好文 时间:
2014-08-20 23:59:13
阅读次数:
474
1、在资源管理类中提供对原始资源的访问 前几个条款很棒,它们是对抗资源泄露的壁垒,但很多APIs直接指向 资源,这个时候,我们需要直接访问原始资源。 这里,有两种方法解决上述问题,我们可将RAII对象转换为原始资源。通过 显式转换与隐式转换。 通常,tr1:: shared_ptr 和 auto_p...
分类:
编程语言 时间:
2014-08-20 16:14:02
阅读次数:
177
对于函数: int priority(); void processWidget(std::tr1:: shared_ptr pw,int priority); 调用以上函数 processWidget(new Widget,priority()); 以上调用错误,因为shared_ptr构造函数需...
分类:
编程语言 时间:
2014-08-20 16:11:22
阅读次数:
194
12.20 编写程序,逐行读入一个输入文件,将内容存入一个StrBlob中,用一个StrBlobPtr打印出StrBlob的每个元素。StrBlob.h#ifndef STRBLOB_H#define STRBLOB_H#include#include#include#includeusing na...
分类:
其他好文 时间:
2014-08-19 22:06:45
阅读次数:
277
条款1:不要把一个原生指针给多个shared_ptr管理int* ptr = new int;shared_ptr p1(ptr);shared_ptr p2(ptr); //logic errorptr对象被删除了2次这种问题比喻成“二龙治水”,在原生指针中也同样可能发生。条款2:不要把this指...
分类:
其他好文 时间:
2014-08-14 01:16:47
阅读次数:
286