2

我正在使用C++创建一个简单的终端幻想游戏。我似乎遇到了一个错误“错误:可变大小的对象”项目可能不会被初始化“。这里是代码:代码:Blocks Mingw编译器错误:可变大小的对象可能未初始化

string useItem(int item) 
{ 
    string items[item] = {"HP Potion","Attack Potion","Defense Potion","Revive","Paralize Cure"}; 
} 

我希望能够使用此功能,以访问和返回一个项目。我该如何解决这个错误。我用mingw编译器使用Code :: Blocks。

+0

原始数组大小在编译时必须已知。否则,你应该使用std :: vector Borgleader 2014-12-07 02:46:57

+0

'char const * items [] = ...'? – 2014-12-07 02:47:02

+0

注意你正在使用的编译器和版本也很有帮助,在这种情况下,答案不会有太大变化,但在其他问题中,它可能会产生很大的变化。 – 2014-12-07 03:32:42

回答

2

这里有几个问题,一个可变长度数组是C99功能,不是ISO C++的一部分,但几个编译器支持该功能,作为扩展including gcc

其次C99说,可变长度数组不能有一个初始化,从draft C99 standard6.7.8初始化

The type of the entity to be initialized shall be an array of unknown size or an object type that is not a variable length array type.

和替代方案是使用:

string items[] = { ... } ; 

和未知阵列大小的大小将由初始化程序中元素的数量决定。

或者,使用可变大小数组的惯用C++方法是使用std::vector

相关问题