C++ 在构造函数中初始化数组';s初始化列表

C++ 在构造函数中初始化数组';s初始化列表,c++,arrays,constructor,initialization,C++,Arrays,Constructor,Initialization,我试图在构造函数的初始化列表中初始化一个数组,我希望该数组的大小为MAX_size,这是堆栈类中的一个公共静态常量。我怎样才能让它工作?编译器抱怨说,在将'double'赋值给'double[0u]时,它们的类型不兼容 这是我的密码: class Stack { public: Stack(); static const unsigned MAX_SIZE; private: double array[];

我试图在构造函数的初始化列表中初始化一个数组,我希望该数组的大小为MAX_size,这是堆栈类中的一个公共静态常量。我怎样才能让它工作?编译器抱怨说,在将'double'赋值给'double[0u]时,它们的类型不兼容

这是我的密码:

class Stack {
    public:      
          Stack();
          static const unsigned MAX_SIZE; 
    private:
          double array[];
          unsigned elements;     
    };  // class Stack

    Stack::Stack(): array( array[MAX_SIZE] ), elements(0) {}

    const unsigned Stack::MAX_SIZE = 4;
提前感谢你的帮助

 class Stack {
        public:
              Stack();
              static const unsigned MAX_SIZE = 4;
        private:
              double array[MAX_SIZE];
              unsigned elements;
        };  // class Stack

 Stack::Stack():  array(), elements(0) {}

但是,
std::vector
会比评论中提到的更好。

除非你完全是受虐狂:
static const unsigned max_size=4;std::矢量阵列;Stack::Stack():数组(最大大小){}
是否有更简单的方法?i、 e.不使用向量。如何让程序接受最大大小的数组数据成员?我会习惯使用
std::vector
。我很少使用数组;几乎每次我都会使用
std::vector
be首选项。@Jesse Good给出的代码也应该有效。有充分的理由避免使用向量。向量总是在堆上初始化,而数组可以在堆栈上初始化。。因此,基本上,避免初始化初始化列表中的数组。不可能,对吗?另外,是否不可能像我那样在main之后编写MAX_SIZE常量?我问的原因是因为我在这里读到的不同,定义应该在类之外:
array()
在初始化器列表中,零初始化所有元素。你是对的,我没有定义
MAX\u SIZE
,因为我只是在代码中使用它的值。如果您需要在其他地方使用,请在类外定义
MAX\u SIZE
。@Sean:您不需要像在其他情况下那样为
静态常量
变量单独定义。@mezhaka:是的,此表单称为
值初始化