将派生对象作为参数传递

问题描述

我有一个像这样的班级学生的构造函数

Student(ISubject subject,IStudy study);

ISubject和IStudy是抽象类。然后,我创建了从抽象类继承的类。 (例如,数学:ISubject和微积分:IStudy)

当我想将派生类的对象传递给构造函数时,出现错误。我该如何解决

谢谢。

解决方法

Student(const ISubject& subject,const IStudy& study);应该可以正常工作,如果需要,您可以丢失const,也可以Student(ISubject* subject,IStudy* study);使用

,

如果您的ISubject和IStudy类是抽象类,则不能根据语言规则创建这些类型的对象。但是当你写

(ISubject主题,IStudy研究)

它告诉您要将这些类型的对象作为函数参数传递,但由于这些对象不存在而无法实现。

也许你应该做的是写

(ISubject *学科,IStudy *研究)

函数声明中的

,这意味着您不希望对象本身,而是将指向此类型对象的指针传递给函数。一方面,它不会告诉您要传递先验条件不存在的对象;并且从另一面可以使用指针将派生类的对象传递给此函数,因为指向派生类的指针可以隐式转换为指向基类的指针 >。