如何在类的构造函数中定义没有大小的静态数组? (C )
作者:互联网
我有一个类定义为:
class Obj {
public:
int width, height;
Obj(int w, int h);
}
我需要它包含一个静态数组,如下所示:
int presc[width][height];
但是,我无法在类中定义,因此可以创建指向2D数组的指针(并且,出于好奇心,3,4和5D数组),将其作为类的成员,并将其初始化为构造函数如:
int ar[5][6];
Obj o(5, 6, &ar);
编辑:这里的想法是每个对象将具有不同的宽度和高度,因此我用来表示该对象的数组对于该对象是唯一的,但是一旦定义了该数组(最好在构造函数中),它就不会改变.并且在编译时已知特定对象的宽度和高度值.
编辑:数组用于碰撞检测,将两个对象的presc数组叠加到一个大数组上,并查看重叠的位置,声明如下:
Obj player1(32, 32); //player with a width of 32 px and height of 32 px, presc[32][32]
Obj boss(500, 500); //boss with a width of 500 px and height of 500 px, presc[500][500]
解决方法:
如果,通过“动态”,你的意思是“堆分配”,那么不,没有办法用当前的Obj. OTOH,如果你在编译时知道w和h:
template <int W, int H>
class Obj {
public:
// ...
private:
int presc[W][H];
}
标签:dynamic-arrays,c,class,static-array 来源: https://codeday.me/bug/20190827/1741135.html