这项任务似乎不起作用。编译器告诉我是找不到合适的构造函数。
Course::Course(Course& course){
if(dynamic_cast<ExamAssessment*>(course.assessment) != NULL){
assessment = new ExamAssessment(*(course.assessment));
}
此代码位于课程类
的复制构造函数中该课程的一部分
class Course{
char* courseName;
float fee;
public:
Assessment* assessment;
评估是一个基类,有3个子类(ExamAssessment为1个子类)。在ExamAssessment的cpp文件中,我有一个副本consructor
ExamAssessment::ExamAssessment(ExamAssessment& exam){
examMark = exam.examMark;
CalculateGrade();
}
显然,赋值中的参数是错误的,但我不确定为什么(C ++新手)。
答案 0 :(得分:3)
您需要保存强制转换的结果并将其用作构造函数参数。您的course.assessment
可能是幕后的ExamAssessment
,但数据类型仍为Assessment
,并且您没有使用该类型的构造函数。