可以在结构体中添加指针类成员变量,并在成员函数中实现动态数组的分配。
以下以一个仅实现整型动态数组,不包含其它功能的类为例做说明。
class array //类名
{
public:
int *v; //动态数组首地址。
int length; //动态数组长度。
array(int len)
{
if(len <= 0)//初始化长度非法。
{
length = 0;
v = NULL;
}
else
{
length = len;
v = new int[length];//内存分配。
}
}
~array()
{
delete [] v;//析构中释放内存。
}
};
首先,第一种情况不会出现 ,所谓结构体可以理解为一种特殊的,默认内部public的,并且不写方法和函数的类,当然你写方法也可以编译的,所以他就是一个类,而如果是数组在结构体中,那么指挥定义一个指针,而不会定义成实例数组,用的时候外部new,所以第一种情况会写成类,然后在构造函数里面new,析构里面delete
第二,是可以的,你写错的原因应该是在for'里面,因为你的结构体都是系统的类型,不是指针,是可以直接new得到,也就是说,你在new Gcell的时候就已经完全搞定了,不需要for,如果是想要修改的话,应该是(*Cell[i]).ran.min=123;这样,而不是再new
template
struct Range{ float min[c]; float max[c];};
template
struct Gcell{ int iNum; Range
int main(){ Gcell<4> *Cell=new Gcell<4>[J];}