Проблема заключается в следующей функции:
void PatientType::setDrName(DoctorType drName) {
Здесь эта функция ожидает параметр типа DoctorType, но вы передаете std :: string.
example.setDrName(drName); // drName is std::string. So, Type mismatch
Существует множество способовРешите это:
Вариант 1: Измените сигнатуру функции на void PatientType::setDrName(const std::string &drName) {
Вариант 2: Менее тривиально, но это работает.Определите параметризованный конструктор в DoctorType
, принимая std::string
в качестве параметра.
Например:
DoctorType::DoctorType(const std::string &name): name(name) { }
Я думаю, что вариант 2 подходит для вашего сценария.
КакПравильно предложенный @t.niese, вы должны явно создать объект DoctorType и определить конструктор как явный.Вот так:
explicit DoctorType::DoctorType(const std::string &name): name(name) { }
и во время звонка:
example.setDrName(DoctorType(drName));