这有什么问题?

时间:2013-11-29 16:25:28

标签: c++ polymorphism copy-constructor rtti

这项任务似乎不起作用。编译器告诉我是找不到合适的构造函数。

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 ++新手)。

1 个答案:

答案 0 :(得分:3)

您需要保存强制转换的结果并将其用作构造函数参数。您的course.assessment可能是幕后的ExamAssessment,但数据类型仍为Assessment,并且您没有使用该类型的构造函数。