[英]Classes: compiler error «no matching function for call to “constructor”»
我是C ++的新手(也包括stackoverflow)。 不幸的是,我个人不认识C ++,因此以下问题可能太简单了。 但是,如果我可以请一个朋友查看我的代码,我不会发布它。 我真的很绝望。
所以,基本上,我正在尝试链接3个班级:课程,老师,学生。 老师和学生的课程在课程内部“直播”。 但是,当我在Course内部创建Teacher对象时,会弹出一个编译器错误:“没有匹配的函数可调用Teacher :: Teacher()”。
我看不到任何错误,也无法真正掌握编译器消息。 请在下面找到我的代码。 对于代码的墙,我感到很抱歉,我尽力抑制了一切。
我愿意接受任何评论和批评。
提前非常感谢您。
class Teacher
{
private:
string fName;
string lName;
int age;
string address;
string city;
string phone;
public:
// Constructor & destructor
Teacher(string fName, string lName);
~Teacher();
// Setters & getters
void setName(string fNameIn, string lNameIn);
void getName();
void setAge(int ageIn);
void getAge();
void setAddress(string addressIn);
void getAddress();
void setCity(string cityIn);
void getCity();
void setPhone(string phoneIn);
void getPhone();
void GradeStudent(); // outputs an appropriate message to the console such as "Student graded"
void SitInClass(); // outputs "Sitting at front of class" for the teacher and "Sitting in main theater" for the students.
};
Teacher::Teacher(string fNameIn, string lNameIn)
{
fName = fNameIn;
lName = lNameIn;
//age = 0;
}
class Course
{
private:
string name;
Student students;
Teacher teacher;
public:
// Constructors & destructor
Course(string nameCourseIn);
//Course(string nameCourseIn, Student studentVecIn, Teacher teacherIn);
~Course();
// Setters and getters
void setName(string courseNameIn);
void getName();
void setClass(Student studentVecIn);
void setTeacher(Teacher teacherIn);
};
int main()
{
std::string name = "Intermediate C++";
Course course (name);
course.getName();
return 0;
}
您已经为Teacher
明确定义了一个构造函数,这意味着它是唯一存在的构造函数。 为了在Course
使用默认的无参数构造函数,您必须首先实现一个。
添加Teacher();
到您的Teacher.h和Teacher::Teacher(){}
到Teacher.cpp即可解决您的问题,但是您在Course
的Teacher
将需要手动初始化。
编辑:Badr El Hiouel指出,如果您不希望在默认构造函数中执行任何代码,并且使用的是C ++ 11,则只需将Teacher() = default
添加到Teacher.h,完全从.cpp省略了它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.