我有点困惑,对我来说,我认为以下两个实现是有效的(但我的语法有错误),但我无法让其中任何一个工作。这是一年级的C++入门课作业,我们不能用Vector(不然很久以前就做完了……)
我已经完成了我的课程Student
,但现在我必须创建一个容器来存储 n 个学生。我在想以下两个选项。
1)创建一个学生对象数组:Student arrayOfStudents[20];
我的学生课很简单(因为行太多所以修改不同)。但想法是这样的......
class Student
{
public:
// Constructor for the Book class, take 6 arguments
Student(string myUID, string myLastName, string myFirstName,
string major, string age, string homeState, bool isWorking);
...
};
但是当我尝试创建一个学生数组时,我收到了这个错误消息。
cs114p2main.cpp: In function ‘int main(int, char**)’:
cs114p2main.cpp:103: error: no matching function for call to ‘Student::Student()’
cs114p2Student.h:14: note: candidates are: Student::Student(std::string*)
cs114p2Student.h:11: note: Student::Student(std::string, std::string, std::string, std::string, std::string, bool)
cs114p2Student.h:7: note: Student::Student(const Student&)
2)还尝试过:创建一个指向每个学生的学生指针数组。
Student* ArrayOfStudents = Student[20];
我的问题是为什么方法1不起作用?在这种情况下我是否必须使用指针(类似于方法 2)。
因为我需要将这个数组传递给一个设置每个学生的函数。(我不知道会有多少学生在那里)。那么这是否意味着我必须将指针传递给学生数组?在那种情况下,我真的希望方法 1 可以工作,我无法想象处理指向学生指针数组的指针。我在想必须返回一个数组data[numOfData][numOfStudnet]
,并主要执行此操作,但无论哪种方式,我都想弄清楚为什么这会给我带来错误..谢谢。
编辑:后续问题:我通过研究知道,我必须将数组的大小声明Student
为参数,但是如果我只知道它运行后的大小怎么办?在这种情况下,我有什么选择?