设为首页 加入收藏

TOP

C++的Enum hack
2015-07-16 12:57:29 来源: 作者: 【 】 浏览:6
Tags:Enum hack

从一个例子开始吧


对于支持类内初始化的C++编译器,这段代码可以编译通过。


但是较老的C++编译器,可能不支持类内初始化,这样我们的静态常量,必须要在类外初始化。如下:


如果没有int scores[GameTurn];,这段代码就可以用不支持类内初始化的编译器通过了。


但因为 int scores[GameTurn]; 用到了GameTurn,而GameTurn的值不能确定。所以会报如下错误。


这种情况下,如果我们仍然不想用硬编码的数字指定数组的大小,就可以考虑这篇文章的主角: enum hack 了。


使用enum hack的技巧,其思想就是把GameTurn定义为一个枚举常量。上面的代码可以写为:


这样代码就可以编译通过了。


《Effective C++》中这样描述enum hack的好处:


不知道我的理解是否有误,欢迎讨论。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇编写C++类的条款 下一篇C标准库函数中复杂的函数声明

评论

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