C++ enum hack 技巧

在定义一个类内的专属常量时,通常定义成为静态常量类型,如:

class GamePlayer

{

  private:

      static const int NumTurns = 5;

      int scores[NumTurns];

      ....

};

  如果编译器不支持类内静态成员初始化,则可以使用“the enum hack”的补偿做法。

class GamePlayer

{

  private:

      //static const int NumTurns = 5;

      enum { NumTurns = 5 }; 

      int scores[NumTurns];

      ....

};

 

ps.

之所以不使用#define的原因是,#define无法控制该常量的可视范围

对于单纯的常量,最好以const对象或者enum替换#defines

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

posted @ 2017-07-31 15:40  opkyo  阅读(663)  评论(0)    收藏  举报