将类实例作为另一个类参数传入

时间:2014-02-23 17:08:18

标签: c++ class map

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:错误:报名::报名(学生,课程)

1 个答案:

答案 0 :(得分:0)

您正尝试访问名为operator[]的变量上的instructor。此变量没有定义此运算符。这就是给你编译错误的原因。

加载的教师位于Instructor::instructorList变量中,如从文件加载教师的代码中所示。

要解决此错误,您必须更改包含instructor[id2]的行以改为使用列表:

Course newCourse(id,Instructor::instructorList[id2],name,dept);