我想在构造数组时传递作为数据容器一部分的数组的大小。我不允许使用STL。
这是针对我大学的家庭作业计划。我尝试为此使用构造函数,但是它不起作用。
struct T
{
node *head, *tail;
T()
{
head=NULL;
tail=NULL;
}
};
struct node
{
int a;
float array[a];
node *next;
node(int b) : a(b) {}
};
int main()
{
...
}
代码不完整,因为我被卡在这里。只是为了可视化我想要实现的目标。
答案 0 :(得分:2)
在结构中将float array[a];
替换为float * array;
struct node
{
int a;
float * array;
node *next;
node(int b) : a(b) {}
};
您将可以管理任意大小
您必须确定在node()的参数中是否给出了float*
,可能都是:
struct node
{
int a;
float * array;
node *next;
node(int b, float * ar) : a(b), array(ar), next(NULL) {}
node(int b) : a(b), next(NULL) { array = new float[a]; }
};
然后需要一个析构函数来删除数组
struct node
{
int a;
float * array;
node *next;
node(int b, float * ar) : a(b), array(ar), next(NULL) {}
node(int b) : a(b), next(NULL) { array = new float[a]; }
~node() { if (array != NULL) delete [] array; }
};
以及更多:复制构造函数,operator =,取决于您的C ++版本,也可能是 move 等
答案 1 :(得分:1)
使用指向数组的指针并在构造函数中分配,并在析构函数中释放。像下面这样。
float *array;
node(int b) : a(b)
{
array = new float[b];
}
~node()
{
delete[] array;
}