c ++表达式必须具有常量值

don*_*ame 4 c++ arrays

我有这个方法:

void createSomething(Items &items)
{
    int arr[items.count]; // number of items
}
Run Code Online (Sandbox Code Playgroud)

但这是一个错误:

expression must have a constant value
Run Code Online (Sandbox Code Playgroud)

我找到了这个解决方案:

int** arr= new int*[items.count];
Run Code Online (Sandbox Code Playgroud)

所以我问有没有更好的方法来处理这个?

Cor*_*mer 8

你可以使用 std::vector

void createSomething(Items &items)
{
    std::vector<int> arr(items.count); // number of items
}
Run Code Online (Sandbox Code Playgroud)

你的第一个方法不起作用的原因是在编译时必须知道数组的大小(不使用编译器扩展),因此你必须使用动态大小的数组.您可以使用new自己分配阵列

void createSomething(Items &items)
{
    int* arr = new int[items.count]; // number of items

    // also remember to clean up your memory
    delete[] arr;
}
Run Code Online (Sandbox Code Playgroud)

但它更安全,恕我直言,使用更有帮助std::vector.