有没有办法让基类要求派生类具有与派生的同一类的对象进行比较的函数?

问题描述 投票:0回答:1

我有一项家庭作业,该作业的一小部分要求一个抽象父“电影”类,其中包含三个具体子类:“喜剧”、“戏剧”和“古典”。

每个子类永远不必与自己以外的类进行比较。例如。喜剧只会与其他喜剧比较、戏剧与戏剧比较等等

有没有一种方法可以在抽象父类“Movie”中创建一个纯虚拟比较方法,该方法接受一个参数:这将迫使每个具体子类重写它,以便对自己的类类型有一个单一的比较函数?

这样,“喜剧”类将在某种程度上“被迫”具有与另一个“喜剧”类(不仅仅是任何电影类)进行比较的比较功能。同样适用于戏剧和经典。

当然,我尝试在 Movie 中实现一个纯虚拟方法,该方法接受 Movie 作为参数进行比较,子类将覆盖该方法。这是可行的,但我希望每个子类都有一个将其自己的类作为参数的比较;以及基类中的纯虚方法在某种程度上“强制”其派生子类。

c++ oop polymorphism abstract-class pure-virtual
1个回答
0
投票

您所要求的根本不可能按照您想要的方式实现。尽管您当然可以创建后代必须重写的抽象基类方法,但您不能在基类级别强制参数类型。每个派生类都必须验证参数的类型是否正确。

© www.soinside.com 2019 - 2024. All rights reserved.