其他分享
首页 > 其他分享> > 如何在类的构造函数中定义没有大小的静态数组? (C )

如何在类的构造函数中定义没有大小的静态数组? (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