4.2.3 向typeof库注册自定义类
typeof库支持C++(www.cppentry.com)内置的基本类型和STL中的大多数类型,但它没有智能到支持任何类型的程度。如果想让用户自己定义的类能够应用于typeof库,则需要使用库提供的一组宏注册后才能使用。
要向typeof库注册类型,首先要以如下的语句开始:
- #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
之后的注册类型使用宏BOOST_TYPEOF_REGISTER_TYPE,它必须在全局名字空间使用,宏的参数是类型的完全名称,包括名字空间限定。
示范如何注册类型的代码如下:
- #include <boost/typeof/typeof.hpp>
- #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
- namespace ex
- {
- struct demo_class{int a,b;}; //一个简单的类
- }
- BOOST_TYPEOF_REGISTER_TYPE(ex::demo_class) //向typeof库注册类
-
- int main()
- {
- BOOST_AUTO(x, make_pair("test", ex::demo_class()));
- cout << typeid(x).name() << endl;
- x.second.a = 10;
- x.second.b = 20;
- cout << x.second.a << x.second.b << endl;
- }