我有这个方法:
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)
所以我问有没有更好的方法来处理这个?
你可以使用 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.