4.2.3 向typeof库注册自定义类

2013-10-07 14:59:45 · 作者: · 浏览: 77

4.2.3  向typeof库注册自定义类

typeof库支持C++(www.cppentry.com)内置的基本类型和STL中的大多数类型,但它没有智能到支持任何类型的程度。如果想让用户自己定义的类能够应用于typeof库,则需要使用库提供的一组宏注册后才能使用。

要向typeof库注册类型,首先要以如下的语句开始:

  1. #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() 

之后的注册类型使用宏BOOST_TYPEOF_REGISTER_TYPE,它必须在全局名字空间使用,宏的参数是类型的完全名称,包括名字空间限定。

示范如何注册类型的代码如下:

  1. #include <boost/typeof/typeof.hpp> 
  2. #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()  
  3. namespace ex  
  4. {  
  5.     struct demo_class{int a,b;};                //一个简单的类  
  6. }  
  7. BOOST_TYPEOF_REGISTER_TYPE(ex::demo_class)  //向typeof库注册类  
  8.  
  9. int main()  
  10. {  
  11.     BOOST_AUTO(x, make_pair("test", ex::demo_class()));  
  12.     cout << typeid(x).name() << endl;  
  13.     x.second.a = 10;  
  14.     x.second.b = 20;  
  15.     cout << x.second.a << x.second.b << endl;  
  16. }