enum hack

发布时间 2023-09-02 12:19:09作者: ycddqr

当编译器坚持必须在编译期间知道数组的大小,且不允许 static 整数型 class 完成 in class 初值设定

可使用 enum hack 补偿做法

理论基础:一个属于枚举类型的数值可权充 int 被使用

class Widget

{

private:

  enum { num = 5 };

  int scores[num];
};

enum hack 的行为比较像 #define 而不像 const。

例如取一个const 的地址是合法的,但取一个enum的地址就不合法,而取一个 #define 的地址通常也不合法

如果你不想让别人获得一个指针或引用指向你的某个整数常量,enum可以帮助实现约束。

但是对于单纯常量,最好以 const 对象或 enum 替换 #define

对于形似函数的宏,最好改用 inline 函数替换 #define