我正在尝试实现一个简单的讲师列表,它是一个动态“讲师”对象的动态数组。首先,我是,不允许使用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];它引发错误:不允许包含未知大小数组的类型。
发布于 2016-03-19 13:17:35
使用指针存储(数组的地址)。
而不是
string courses[];使用
string *courses;并将其初始化为
courses = new string[size_of_elements];要扩展元素的数量,您必须
courses发布于 2016-03-19 13:31:10
创建一个与代码类似的简单示例。效果很好。
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;
}使用它修复您的错误
https://stackoverflow.com/questions/36102164
复制相似问题