Class Scoped Constants

Class Scoped Constants

Is there a better way to scope constant values within a class other than by using “enum”?

class Foo {public:   enum {     valueOne = 1,     valueTwo = 2   } EFooValues;};

It would be much nicer to write…

class Foo {public:   const int valueOne = 1;   const int valueTwo = 2;   const char* stringOne = "hello";};

You can use a const static int instead of an unnamed enum. For example:

class Foo {public:  static const int valueOne = 1,  static const int valueTwo = 2  static const int EFooValues = 3;};

Note, however, that some compilers (e.g. Visual C++) won’t let you initialize a const static int member inside the class’ body because this feature was added relatively recently to C++ and some vendors haven’t implemented it yet.


Share the Post: