动态对象的动态数组
Dynamic Arrays Of Dynamic Objects
我正在尝试实现一个简单的讲师列表,它是动态"讲师"对象的动态数组。首先,我不允许使用STL或向量等。目标是使用默认值在堆上启动动态指导程序数组,当需要添加指导程序时,如有必要,请扩展数组大小。问题是无法使用默认大小初始化教师数组,因为讲师对象的大小也是动态的。有没有处理这个问题的好方法?
这是讲师类
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];
要扩展元素的数量,您必须
- 分配具有新大小的新数组
- 将旧数组的内容复制到新数组
- 只销毁旧阵列(不要在这里销毁新阵列!
- 将新阵列的地址分配给
courses
创建一个类似于您的代码的简单示例。它工作正常。
class A {
private:
char *field;
public:
A() {};
A(char *field) : field(field) { }
char *getField() const {
return field;
}
};
int main() {
int size = 5;
A *aList = new A[size];
for (int i = 0; i < size; i++) {
aList[i] = A((char *) std::to_string(i).c_str());
std::cout << aList[i].getField();
}
return 0;
}
使用它来修复您的错误
相关文章:
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 输出没有重复元素的动态数组(收缩数组)C++
- 正在插入动态数组
- 如何在动态数组上使用搜索函数
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 静态数组的自由动态数组
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 为什么 c++ 动态数组的大小没有改变?
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 指针的 C++ 动态数组 - 何时需要使用它?
- 删除动态数组时未定义标识符
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 动态数组的 C++ 重载加运算符
- 基于数组的列表 - 动态数组创建时出错