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 строки. Я знаю, как передать их в порядке, но это инструктор инструктора инструктора, на который я застрял.
Класс инструктора содержит информацию каждого человека, хранящуюся на карте с ключом 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 Зачисление :: loadEnrollment()
230: ошибка: нет соответствующей функции для звонка в "Регистрация": регистрация (курс и "студент")
81: ошибка: кандидаты: Зачисление :: Зачисление (const Enrollment &)
88: ошибка: регистрация :: регистрация()
87: ошибка: Регистрация :: Регистрация (Студент, курс)
Вы пытаетесь получить доступ к operator[]
для переменной с именем instructor
. Эта переменная не имеет этого оператора. Это то, что дает вам ошибку компиляции.
Загруженные инструкторы находятся в переменной Instructor::instructorList
, как показано в коде, который загружает инструкторов из файла.
Чтобы устранить эту ошибку, вы должны изменить строку, содержащую instructor[id2]
чтобы использовать список:
Course newCourse(id,Instructor::instructorList[id2],name,dept);