Class Scoped Constants

Question:
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";};

Answer:
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:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: