gpt4 book ai didi

c++ - 动态对象的动态数组

转载 作者:行者123 更新时间:2023-11-30 02:32:43 25 4
gpt4 key购买 nike

我正在尝试实现一个简单的 Instructor List,它是动态“Instructor”对象的动态数组。首先,我不允许使用 STL 和 vector 等。目标是在堆上启动一个具有默认值的动态 instructor 数组,当需要添加 instructor 时,根据需要扩展数组大小。问题是无法使用默认大小初始化讲师数组,因为 Instructor 对象的大小也是动态的。有没有好的方法来处理这个问题?

这是Instructor类

class Instructor{
private:
string title, firstName, lastName, telNo, roomNo, userName, eMail;
string courses[];

public:
Instructor();
Instructor(string, string, string, string, string, string, string, string);
string getTitle();
string getFirstName();
string getLastName();
string getTelNo();
string getRoomNo();
string getUserName();
string getEMail();
string getCourse(int courseIndex);
void setTitle(string);
void setFirstName(string);
void setLastName(string);
void setTelNo(string);
void setRoomNo(string);
void setUserName(string);
void setEMail(string);
void setCourse(string);
void print();
};

我尝试初始化数组的部分:

int size = 5;
Instructor *instructorList;
instructorList = new Instructor[size];

它抛出错误:不允许包含未知大小数组的类型

最佳答案

使用指针来存储数组(的地址)。

代替

string courses[];

使用

string *courses;

像这样初始化

courses = new string[size_of_elements];

要扩展元素的数量,你将不得不

  1. 分配具有新大小的新数组
  2. 将旧数组的内容复制到新数组
  3. 销毁旧数组(不要在这里销毁新数组!)
  4. 将新数组的地址分配给courses

关于c++ - 动态对象的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36102164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com