LectureTitle title (
Specialization("C++"),
Course("White belt"),
Week("4th")
);
Здесь вы пытаетесь создать экземпляр LectureTitle
с временными значениями ( rvalues ) Specialization
, Course
и Week
. Они являются временными, потому что они не являются именованными переменными, то есть не определены как переменные перед этим фрагментом кода.
Однако все ваши конструкторы принимают ссылки на именованные переменные ( lvalues ). Вот почему вы получаете ошибки компилятора. Чтобы исправить эти ошибки, вы можете заставить конструкторы принимать ссылки на константные значения следующим образом:
explicit Specialization(const std::string& new_value) {
data = new_value;
}
explicit Course(const std::string& new_value) {
data = new_value;
}
explicit Week(const std::string& new_value) {
data = new_value;
}
LectureTitle(const Specialization& new_value1, const Course& new_value2, const Week new_value3) {
specialization = new_value1.data;
course = new_value2.data;
week = new_value3.data;
}
Константные ссылки на lvalue могут связываться с rvalue - то есть увеличивать время жизни временного объекта; и эти временные значения могут быть использованы для инициализации переменных-членов в ваших конструкторах.