Course newCourse(id,instructor[id2],name,dept);
Course::courseList.insert(std::pair<int,Course>(id,newCourse));
这是我调用课程类的构造函数的代码的一部分。教师[id2]是我认为可行的方式,但事实并非如此。
Course(int courseId, Instructor instructor, string courseName, string dept)
:courseId(courseId),instructor(instructor),courseName(courseName),dept(dept)
{
};
这是类定义中的代码片段。正如您所看到的,3个参数是一个int和2个字符串。我知道如何传递那些罚款,但它是教练讲师的论点,我坚持。
Instructor类将每个人的信息存储在一个以int为键的地图中。我从构建课程类中读取的文件使用int将课程与教师联系起来。我想我会使用int并查看讲师地图以取出合适的人名,但我不断得到未定义的函数错误。
文件示例:
0,0,Science,Dept
the first 0 s the course ID number and the second is the instructor ID number.
编辑:不同的方法似乎是同一类型的呼叫
来自问题方法的代码
224 string myText(line);
225 istringstream iss(myText);
226 if (!(iss>>id)) id = 0;
227 iss.ignore(1,',');
228 if (!(iss>>id2)) id2 = 0;
229 cout<<"id: "<<id<<" id2: "<<id2<<endl;
230 Enrollment newEnrollment(Course::courseList[id], Student::studentList[id2]);
构造函数声明:
87 Enrollment(Student student,Course course):student(student),course(course){}
错误:
:在静态成员函数`static int Enrollment :: loadEnrollment()
中230:错误:没有匹配函数来调用`Enrollment :: Enrollment(Course&amp;,Student&amp;)'
81:错误:候选人是:报名::报名(常规报名&amp;)
88:错误:注册::注册()
87:错误:报名::报名(学生,课程)
答案 0 :(得分:0)
您正尝试访问名为operator[]
的变量上的instructor
。此变量没有定义此运算符。这就是给你编译错误的原因。
加载的教师位于Instructor::instructorList
变量中,如从文件加载教师的代码中所示。
要解决此错误,您必须更改包含instructor[id2]
的行以改为使用列表:
Course newCourse(id,Instructor::instructorList[id2],name,dept);