刚进入ceph源码感觉很多怪怪的语法: 像上图的bufferlist不是一个类,它的其实是 ceph::list 类,如下图:
那为什么能直接用bufferlist实例化对象呢,经过一番搜索,原来在 ceph/src/include/buffer_fwd.h 里有这么一个using,如下图:
这是c++11的新玩法,using具有像typedf的功能,看下面的测试代码:
#include "iostream"
using namespace std; namespace lkx{ namespace buffer { class list { public: void say() { cout<< "good" << endl; } }; } using bufferlist = buffer::list; //等同于: //typedef buffer::list bufferlist; }
using namespace lkx; int main() { bufferlist l; l.say();
return 0; }
编译:记得加上-std=c++11 g++ -std=c++11 -o test test.cpp
由睿江云人员提供,想了解更多,请登陆www.eflycloud.com