在没有#define的头文件中声明数组大小

时间:2009-07-22 15:07:25

标签: c++ arrays header

我有一个代码(简化版):

#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];
};

我不喜欢MyCalss的所有用户都可以看到的定义。

我怎样才能用C ++风格来做?

由于 迪马

2 个答案:

答案 0 :(得分:6)

为什么不简单地使用常量?

const int message_size_max = 1024;

请注意,与C不同,C ++使得全局范围内的常量变量默认具有静态链接。

上面的常量变量是一个常量表达式,因此可用于指定数组大小。

char message[message_size_max];

答案 1 :(得分:5)

将这些内容纳入class定义的技巧是,

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

我从不喜欢#defines像常量一样使用 使用enum始终是一种很好的做法。