我有这种方法:
void createSomething(Items &items)
{
int arr[items.count]; // number of items
}
但这会引发错误:
expression must have a constant value
我发现了以下解决方案:
int** arr= new int*[items.count];
所以我问有没有更好的方法来解决这个问题?
您可以使用 std::vector
void createSomething(Items &items)
{
std::vector<int> arr(items.count); // number of items
}
第一种方法不起作用的原因是,必须在编译时知道数组的大小(不使用编译器扩展),因此必须使用动态大小的数组。您可以使用new
自己分配数组
void createSomething(Items &items)
{
int* arr = new int[items.count]; // number of items
// also remember to clean up your memory
delete[] arr;
}
但是使用,更安全,恕我直言std::vector
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句