如何防止警告:ISO c++禁止可变长度数组' nodes ' [-Wvla]

How to prevent warning: ISO C++ forbids variable length array ‘nodes’ [-Wvla]

本文关键字:数组 nodes -Wvla 警告 何防止 ISO c++ 禁止      更新时间:2023-10-16

对于这两行代码,我得到了这个警告:

 const int entityNumber = materialNames.size();
 SceneNode* nodes[entityNumber];

我认为声明entityNumber为const将解决这个问题。(它在以前的版本中,当实体编号只是我自己设置的值),但它似乎并不奏效。正如你所知,我对c++很陌生,所以如果这是一个愚蠢的问题,很抱歉。

您可能应该创建一个std::vector,这是一个动态长度数组,但有很多常用操作的支持:

// This reserves space for all the nodes you'll store
std::vector<SceneNode> nodes(materialNames.size());

使用std::vector代替传统数组