【发布时间】:2014-10-13 12:27:22
【问题描述】:
class Array {
public:
Array(unsigned h, unsigned l, std::initializer_list<double>);
....
private:
unsigned length;
double * array;
...
};
Array::Array(unsigned l, std::initializer_list<double> il) :
length(l)
{
array(new (std::nothrow) array[l]);
if (!array)
throw OutOfMem();
for (auto el = il.begin(), int i = 0; i < length; i++)
{
if (el === il.end())
throw WrongDim();
array[i] = *el;
el++;
}
}
}
这只是我必须为我的作业做的原始课程的草稿。编译出错:
非静态数据成员“长度”的使用无效 无符号长度;
有人知道如何解决这个问题吗?
【问题讨论】:
-
那里的代码非常混乱。您在ctor定义中缺少
h,因此编译器可能不会将其解析为ctor,而是有些奇怪。其次,array的初始化可能也应该在 mem-initializer-list 中,您的意思可能是new (std::nothrow) double[l]。 -
当您发布有关错误的问题时,请始终在问题中包含完整的错误日志,并标出错误的来源。
-
完整的错误日志包含超过 6 页,据我观察,其中大部分是错误分配的结果。这就是我问这件事的原因。问题是我不知道为什么即使很难我总是必须初始化那些我不能使用它们在构造对象中分配动态数组的值
标签: c++ arrays dynamic allocation