我目前正在为游戏制作插件,但我遇到了以下问题:
我想让用户选择半径,但由于C ++不允许我创建一个可变大小的数组,因此我无法获得自定义半径。
这很好用
const int numElements = 25;
const int arrSize = numElements * 2 + 2;
int vehs[arrSize];
//0 index is the size of the array
vehs[0] = numElements;
int count = GET_PED_NEARBY_VEHICLES(PLAYER_PED_ID(), vehs);
但是这个选择了
int radius = someOtherVariableForRadius * 2;
const int numElements = radius;
const int arrSize = numElements * 2 + 2;
int vehs[arrSize];
//0 index is the size of the array
vehs[0] = numElements;
int count = GET_PED_NEARBY_VEHICLES(PLAYER_PED_ID(), vehs);
是否有任何可能的方法来修改const int而不会在
中创建错误int vehs[arrSize];
答案 0 :(得分:2)
数组大小必须是C ++中的编译时常量。
在第一个版本中,arrSize
是编译时常量,因为它的值可以在编译时计算。
在第二个版本中,arrSize
不是编译时常量,因为它的值只能在运行时计算(因为它取决于用户输入)。
解决此问题的惯用方法是使用std::vector
:
std::vector<int> vehs(arrSize);
//0 index is the size of the array
vehs[0] = numElements;
要获取指向底层数组的指针,请调用data()
:
int count = GET_PED_NEARBY_VEHICLES(PLAYER_PED_ID(), vehs.data());