【发布时间】:2012-06-04 00:17:19
【问题描述】:
我正在尝试在构造函数的初始化列表中初始化一个数组,并且我希望该数组的大小为 MAX_SIZE,这是我的 Stack 类中的一个公共静态常量。我怎样才能让它工作?编译器抱怨说他们在将 '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;
提前感谢您的帮助。
【问题讨论】:
-
除非你完全自虐:
static const unsigned max_size = 4; std::vector<double> array; Stack::Stack() : array(MAX_SIZE){} -
有没有更简单的方法?即不使用向量。如何让程序接受大小为 MAX_SIZE 的数组数据成员?
-
我会习惯使用
std::vector。我很少使用数组;我几乎每次都会使用std::vector作为首选。 @Jesse Good 给出的代码也应该可以工作。 -
有正当理由避免使用向量。向量总是在堆上初始化,而数组可以在栈上初始化。
标签: c++ arrays constructor initialization