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

dim*_*mba 2 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];
};
Run Code Online (Sandbox Code Playgroud)

我不喜欢定义,它们对MyCalss的所有用户都是可见的.

我怎么能用C++风格呢?

谢谢迪马

ava*_*kar 7

你为什么不简单地使用常数?

const int message_size_max = 1024;
Run Code Online (Sandbox Code Playgroud)

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

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

char message[message_size_max];
Run Code Online (Sandbox Code Playgroud)


nik*_*nik 6

将这些事情纳入class定义的诀窍是,

// public:
enum {MESSAGE_SIZE_MAX=1024, MESSAGE_COUNT_MAX=20};
Run Code Online (Sandbox Code Playgroud)

我从不喜欢#defines像常量一样使用.
它总是一个很好的使用方法enum.