Tutorial :Declare array size in header file without #define's



Question:

I have a code a following (simplified version):

#define MESSAGE_SIZE_MAX 1024  #defined MESSAGE_COUNT_MAX 20    class MyClass {  public:     .. some stuff  private:     unsigned char m_messageStorage[MESSAGE_COUNT_MAX*MESSAGE_SIZE_MAX];  };  

I don't like defines, which are visible to all users of MyCalss.

How can I do it in C++ style?

Thanks Dima


Solution:1

The trick to get such things into the class definition is,

// public:  enum {MESSAGE_SIZE_MAX=1024, MESSAGE_COUNT_MAX=20};  

I never liked #defines to be used like constants.
Its always a good practice to use enum.


Solution:2

Why don't you simply use a constant?

const int message_size_max = 1024;  

Note that unlike C, C++ makes constant variables in global scope have static linkage by default.

The constant variable above is a constant expression and as such can be used to specify array sizes.

char message[message_size_max];  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »