2

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

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

我希望能够使用此功能来访问和返回项目。我该如何解决这个错误。我正在使用带有 mingw 编译器的 Code::Blocks。

4

1 回答 1

2

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

其次,C99 说可变长度数组不能有初始化器,来自草案 C99 标准部分6.7.8 Initialization

要初始化的实体的类型应该是一个未知大小的数组或一个不是可变长度数组类型的对象类型。

替代方法是使用:

string items[] = { ... } ;

未知大小的数组的大小将由初始化程序中的元素数决定。

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

于 2014-12-07T03:11:03.377 回答