设为首页 加入收藏

TOP

4.11.2 BOOST_STATIC_CONSTANT
2013-10-07 15:02:16 来源: 作者: 【 】 浏览:77
Tags:4.11.2 BOOST_STATIC_CONSTANT

4.11.2  BOOST_STATIC_CONSTANT

C++(www.cppentry.com)98标准允许直接在类声明中为静态整型成员变量赋初始值,但并不是所有编译器都实现了这个特性。如果使用的编译器缺乏这个能力,那么只能使用enum来变通实现。

下面的代码定义了一个类static_int,它同时使用了这两种方法:

  1. struct static_int  
  2. {  
  3.     static const int v1 = 10;               //静态整型变量赋初值  
  4.     enum { v2 = 20};                        //枚举得到编译期整数值  
  5.     int a[v2];   
  6. };  
  7. cout << static_int::v1 << endl;  
  8. cout << static_int::v2 << endl;  

这段代码在VC8下编译运行正常,但在较老的VC6下编译时v1的声明不被认可,v2的enum方式编译正常。

BOOST_STATIC_CONSTANT宏为这个解决问题提供了一个可移植的简便语法:

  1. BOOST_STATIC_CONSTANT(type, assignment) 

使用BOOST_STATIC_CONSTANT宏,我们无须担心编译器的能力限制,代码会更具可移植性。它的用法就像是一个普通的变量赋值语句,只是使用了略微有些变形的宏形式,有点类似BOOST_AUTO。

之前的例子可以用BOOST_STATIC_CONSTANT宏改写如下:

  1. struct static_int  
  2. {  
  3.     BOOST_STATIC_CONSTANT(int, v1 = 10);  
  4.     BOOST_STATIC_CONSTANT(int, v2 = 20);  
  5.     ...  
  6. };  

这样的代码比单纯的静态成员变量声明或者enum更清晰,具可读性。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.9.2 类摘要 下一篇4.11.1 BOOST_STRINGIZE

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: