将派生对象作为参数传递

时间:2020-10-29 19:13:44

标签: c++ inheritance constructor strategy-pattern

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

Student(ISubject subject, IStudy study);

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

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

谢谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

(ISubject主题,IStudy研究)

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

也许你应该做的是写

(ISubject *学科,IStudy *研究)

函数声明中的

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

相关问题