c++ - 警告 : non-constant array size in new, 无法验证初始化列表的长度

标签 c++ gcc-warning

我遇到了类似的问题。

int j = 6;
int *k = new int[j]{4};

警告是:

warning: non-constant array size in new, unable to verify length 
of initializer-list [enabled by default]

我只遇到警告,没有错误,我使用 -std=gnu++11 运行

另外,我希望为每个实例调用构造函数。如果我打印数组值,所有

最佳答案

问题正是编译器告诉你的。

维度仅在运行时已知,因此您只能使用运行时功能,例如:

std::vector<int> v(j, 4);
// `v` contains `j` ints, all initialised to `4`

如果您有一个无法默认构造的元素类型,您可以就地构造元素:

std::vector<T> v;
v.reserve(j);
for (size_t i = 0; i < j; i++)
   v.emplace_back(ctor-args-here);

您也可以使用初始化列表:

std::vector<T> v{
   T(ctor-args-here), T(ctor-args-here), T(ctor-args-here),
   T(ctor-args-here), T(ctor-args-here), T(ctor-args-here)
};

对象将被移动,最坏的情况是被复制。

这里的要点是 vector 元素不需要是可默认构造的。

(不幸的是,我不知道没有循环或代码重复的方法。)

关于c++ - 警告 : non-constant array size in new, 无法验证初始化列表的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712802/

相关文章:

c++ - 如何在 OSX 上使用 glfw3 在 OpenGL 和 OpenCL 之间创建共享上下文?

c++ - 从成员中查找结构基地址的标准方法

c++ - 取消引用类型双关指针将打破严格的别名规则 : array of bytes to a number

C泛型参数转化为函数指针

python - 安装 Charm-Crypto for Python3 时出现问题

c++ - 是否有 c++ 源代码/lib 来解决带有矩形 bin(不是正方形)和旋转的 2D Bin Packing?

c++ - 来自 QFrame 的 Qt 气球窗口

c++ - 解决由于类之间的循环依赖而导致的构建错误

c - 警告 "format not a string literal and no format arguments"未出现在最新的 gcc 版本中

C 警告 : implicit declaration of function